]> git.xolatile.top Git - xolatile-raylib-ada.git/commitdiff
Initial bindings and window example...
authorxolatile <xolatile@proton.me>
Mon, 18 Mar 2024 12:06:11 +0000 (08:06 -0400)
committerxolatile <xolatile@proton.me>
Mon, 18 Mar 2024 12:06:11 +0000 (08:06 -0400)
.gitignore [new file with mode: 0644]
README.md
compile.sh [new file with mode: 0644]
raylib.ads [new file with mode: 0644]
window.adb [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..38b4169
--- /dev/null
@@ -0,0 +1,3 @@
+*.o
+*.ali
+window
index c55ee3ceda0c12784696a8b5dcaf038802182fbf..be8261295415142e230305d332308dfc79ab4525 100644 (file)
--- a/README.md
+++ b/README.md
@@ -1,3 +1,23 @@
 # raylib-ada
 
-Ada bindings for Raylib 5.1 library.
\ No newline at end of file
+Ada bindings for Raylib 5.1 library.
+
+```ada
+with Raylib;
+use  Raylib;
+
+procedure Window is
+begin
+       Open_Window (720, 360, "Heyo Raylib!" & Character'Val (0));
+       --
+       Main_Loop: loop
+               exit when Window_Should_Close;
+               --
+               Begin_Drawing;
+               Clear_Background (Blue);
+               End_Drawing;
+       end loop Main_Loop;
+       --
+       Close_Window;
+end Window;
+```
diff --git a/compile.sh b/compile.sh
new file mode 100644 (file)
index 0000000..bc9aac4
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+set -xe
+
+gnatmake -c window.adb
+gnatbind window.ali
+gnatlink window.ali -lraylib
+
+exit
diff --git a/raylib.ads b/raylib.ads
new file mode 100644 (file)
index 0000000..f252579
--- /dev/null
@@ -0,0 +1,3842 @@
+------------------------------------------------------------------------
+--
+--  raylib v5.1-dev - A simple and easy-to-use library to enjoy videogames programming (www.raylib.com)
+--
+--  FEATURES:
+--      - NO external dependencies, all required libraries included with raylib
+--      - Multiplatform: Windows, Linux, FreeBSD, OpenBSD, NetBSD, DragonFly,
+--                       MacOS, Haiku, Android, Raspberry Pi, DRM native, HTML5.
+--      - Written in plain C code (C99) in PascalCase/camelCase notation
+--      - Hardware accelerated with OpenGL (1.1, 2.1, 3.3, 4.3 or ES2 - choose at compile)
+--      - Unique OpenGL abstraction layer (usable as standalone module): [rlgl]
+--      - Multiple Fonts formats supported (TTF, XNA fonts, AngelCode fonts)
+--      - Outstanding texture formats support, including compressed formats (DXT, ETC, ASTC)
+--      - Full 3d support for 3d Shapes, Models, Billboards, Heightmaps and more!
+--      - Flexible Materials system, supporting classic maps and PBR maps
+--      - Animated 3D models supported (skeletal bones animation) (IQM)
+--      - Shaders support, including Model shaders and Postprocessing shaders
+--      - Powerful math module for Vector, Matrix and Quaternion operations: [raymath]
+--      - Audio loading and playing with streaming support (WAV, OGG, MP3, FLAC, XM, MOD)
+--      - VR stereo rendering with configurable HMD device parameters
+--      - Bindings to multiple programming languages available!
+--
+--  NOTES:
+--      - One default Font is loaded on InitWindow()->LoadFontDefault() [core, text]
+--      - One default Texture2D is loaded on rlglInit(), 1x1 white pixel R8G8B8A8 [rlgl] (OpenGL 3.3 or ES2)
+--      - One default Shader is loaded on rlglInit()->rlLoadShaderDefault() [rlgl] (OpenGL 3.3 or ES2)
+--      - One default RenderBatch is loaded on rlglInit()->rlLoadRenderBatch() [rlgl] (OpenGL 3.3 or ES2)
+--
+--  DEPENDENCIES (included):
+--      [rcore] rglfw (Camilla Löwy - github.com/glfw/glfw) for window/context management and input (PLATFORM_DESKTOP)
+--      [rlgl] glad (David Herberth - github.com/Dav1dde/glad) for OpenGL 3.3 extensions loading (PLATFORM_DESKTOP)
+--      [raudio] miniaudio (David Reid - github.com/mackron/miniaudio) for audio device/context management
+--
+--  OPTIONAL DEPENDENCIES (included):
+--      [rcore] msf_gif (Miles Fogle) for GIF recording
+--      [rcore] sinfl (Micha Mettke) for DEFLATE decompression algorithm
+--      [rcore] sdefl (Micha Mettke) for DEFLATE compression algorithm
+--      [rtextures] stb_image (Sean Barret) for images loading (BMP, TGA, PNG, JPEG, HDR...)
+--      [rtextures] stb_image_write (Sean Barret) for image writing (BMP, TGA, PNG, JPG)
+--      [rtextures] stb_image_resize (Sean Barret) for image resizing algorithms
+--      [rtext] stb_truetype (Sean Barret) for ttf fonts loading
+--      [rtext] stb_rect_pack (Sean Barret) for rectangles packing
+--      [rmodels] par_shapes (Philip Rideout) for parametric 3d shapes generation
+--      [rmodels] tinyobj_loader_c (Syoyo Fujita) for models loading (OBJ, MTL)
+--      [rmodels] cgltf (Johannes Kuhlmann) for models loading (glTF)
+--      [rmodels] Model3D (bzt) for models loading (M3D, https:--bztsrc.gitlab.io/model3d)
+--      [raudio] dr_wav (David Reid) for WAV audio file loading
+--      [raudio] dr_flac (David Reid) for FLAC audio file loading
+--      [raudio] dr_mp3 (David Reid) for MP3 audio file loading
+--      [raudio] stb_vorbis (Sean Barret) for OGG audio loading
+--      [raudio] jar_xm (Joshua Reisenauer) for XM audio module loading
+--      [raudio] jar_mod (Joshua Reisenauer) for MOD audio module loading
+--
+--
+--  LICENSE: zlib/libpng
+--
+--  raylib is licensed under an unmodified zlib/libpng license, which is an OSI-certified,
+--  BSD-like license that allows static linking with closed source software:
+--
+--  Copyright (c) 2013-2023 Ramon Santamaria (@raysan5)
+--
+--  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.
+--
+--  Documenting small changes I've made to avoid the confusion:
+--  -- Changed all names from PascalCase to Ada_Case.
+--  -- Removed 2D from some names, added _ND to other names.
+--  -- What was once an integer is now a properly checked enumeration.
+--  -- IDE with search support can handle things changed above...
+--  --
+--  --
+--  --
+--  --
+--
+------------------------------------------------------------------------
+
+with System;
+
+package Raylib is
+
+------------------------------------------------------------------------
+
+       type Config_Flags is (
+               Flag_Fullscreen_Mode,
+               Flag_Window_Resizable,
+               Flag_Window_Undecorated,
+               Flag_Window_Transparent,
+               Flag_MSAA_x4_Hint,
+               Flag_VSync_Hint,
+               Flag_Window_Hidden,
+               Flag_Window_Always_Run,
+               Flag_Window_Minimized,
+               Flag_Window_Maximized,
+               Flag_Window_Unfocused,
+               Flag_Window_Topmost,
+               Flag_Window_High_DPI,
+               Flag_Window_Mouse_Passthrough,
+               Flag_Borderless_Windowed_Mode,
+               Flag_Interlaced_Hint
+       ) with Convention => C;
+
+       for Config_Flags use (
+               Flag_Fullscreen_Mode          => 16#00000002#,
+               Flag_Window_Resizable         => 16#00000004#,
+               Flag_Window_Undecorated       => 16#00000008#,
+               Flag_Window_Transparent       => 16#00000010#,
+               Flag_MSAA_x4_Hint             => 16#00000020#,
+               Flag_VSync_Hint               => 16#00000040#,
+               Flag_Window_Hidden            => 16#00000080#,
+               Flag_Window_Always_Run        => 16#00000100#,
+               Flag_Window_Minimized         => 16#00000200#,
+               Flag_Window_Maximized         => 16#00000400#,
+               Flag_Window_Unfocused         => 16#00000800#,
+               Flag_Window_Topmost           => 16#00001000#,
+               Flag_Window_High_DPI          => 16#00002000#,
+               Flag_Window_Mouse_Passthrough => 16#00004000#,
+               Flag_Borderless_Windowed_Mode => 16#00008000#,
+               Flag_Interlaced_Hint          => 16#00010000#
+       );
+
+       type Trace_Log_Level is (
+               Log_All,
+               Log_Trace,
+               Log_Debug,
+               Log_Info,
+               Log_Warning,
+               Log_Error,
+               Log_Fatal,
+               Log_None
+       ) with Convention => C;
+
+       type Keyboard_Key is (
+               Key_Null,
+               Key_Space,
+               Key_Apostrophe,
+               Key_Comma,
+               Key_Minus,
+               Key_Period,
+               Key_Slash,
+               Key_0,
+               Key_1,
+               Key_2,
+               Key_3,
+               Key_4,
+               Key_5,
+               Key_6,
+               Key_7,
+               Key_8,
+               Key_9,
+               Key_Semicolon,
+               Key_Equal,
+               Key_A,
+               Key_B,
+               Key_C,
+               Key_D,
+               Key_E,
+               Key_F,
+               Key_G,
+               Key_H,
+               Key_I,
+               Key_J,
+               Key_K,
+               Key_L,
+               Key_M,
+               Key_N,
+               Key_O,
+               Key_P,
+               Key_Q,
+               Key_R,
+               Key_S,
+               Key_T,
+               Key_U,
+               Key_V,
+               Key_W,
+               Key_X,
+               Key_Y,
+               Key_Z,
+               Key_Left_Bracket,
+               Key_Backslash,
+               Key_Right_Bracket,
+               Key_Grave,
+               Key_Escape,
+               Key_Enter,
+               Key_Tab,
+               Key_Backspace,
+               Key_Insert,
+               Key_Delete,
+               Key_Right,
+               Key_Left,
+               Key_Down,
+               Key_Up,
+               Key_Page_Up,
+               Key_Page_Down,
+               Key_Home,
+               Key_End,
+               Key_Caps_Lock,
+               Key_Scroll_Lock,
+               Key_Num_Lock,
+               Key_Print_Screen,
+               Key_Pause,
+               Key_F1,
+               Key_F2,
+               Key_F3,
+               Key_F4,
+               Key_F5,
+               Key_F6,
+               Key_F7,
+               Key_F8,
+               Key_F9,
+               Key_F10,
+               Key_F11,
+               Key_F12,
+               Key_Pad_0,
+               Key_Pad_1,
+               Key_Pad_2,
+               Key_Pad_3,
+               Key_Pad_4,
+               Key_Pad_5,
+               Key_Pad_6,
+               Key_Pad_7,
+               Key_Pad_8,
+               Key_Pad_9,
+               Key_Pad_Decimal,
+               Key_Pad_Divide,
+               Key_Pad_Multiply,
+               Key_Pad_Subtract,
+               Key_Pad_Add,
+               Key_Pad_Enter,
+               Key_Pad_Equal,
+               Key_Left_Shift,
+               Key_Left_Control,
+               Key_Left_Alt,
+               Key_Left_Super,
+               Key_Right_Shift,
+               Key_Right_Control,
+               Key_Right_Alt,
+               Key_Right_Super,
+               Key_KB_Menu
+       ) with Convention => C;
+
+       for Keyboard_Key use (
+               Key_Null          => 0,
+               Key_Space         => 32,
+               Key_Apostrophe    => 39,
+               Key_Comma         => 44,
+               Key_Minus         => 45,
+               Key_Period        => 46,
+               Key_Slash         => 47,
+               Key_0             => 48,
+               Key_1             => 49,
+               Key_2             => 50,
+               Key_3             => 51,
+               Key_4             => 52,
+               Key_5             => 53,
+               Key_6             => 54,
+               Key_7             => 55,
+               Key_8             => 56,
+               Key_9             => 57,
+               Key_Semicolon     => 59,
+               Key_Equal         => 61,
+               Key_A             => 65,
+               Key_B             => 66,
+               Key_C             => 67,
+               Key_D             => 68,
+               Key_E             => 69,
+               Key_F             => 70,
+               Key_G             => 71,
+               Key_H             => 72,
+               Key_I             => 73,
+               Key_J             => 74,
+               Key_K             => 75,
+               Key_L             => 76,
+               Key_M             => 77,
+               Key_N             => 78,
+               Key_O             => 79,
+               Key_P             => 80,
+               Key_Q             => 81,
+               Key_R             => 82,
+               Key_S             => 83,
+               Key_T             => 84,
+               Key_U             => 85,
+               Key_V             => 86,
+               Key_W             => 87,
+               Key_X             => 88,
+               Key_Y             => 89,
+               Key_Z             => 90,
+               Key_Left_Bracket  => 91,
+               Key_Backslash     => 92,
+               Key_Right_Bracket => 93,
+               Key_Grave         => 96,
+               Key_Escape        => 256,
+               Key_Enter         => 257,
+               Key_Tab           => 258,
+               Key_Backspace     => 259,
+               Key_Insert        => 260,
+               Key_Delete        => 261,
+               Key_Right         => 262,
+               Key_Left          => 263,
+               Key_Down          => 264,
+               Key_Up            => 265,
+               Key_Page_Up       => 266,
+               Key_Page_Down     => 267,
+               Key_Home          => 268,
+               Key_End           => 269,
+               Key_Caps_Lock     => 280,
+               Key_Scroll_Lock   => 281,
+               Key_Num_Lock      => 282,
+               Key_Print_Screen  => 283,
+               Key_Pause         => 284,
+               Key_F1            => 290,
+               Key_F2            => 291,
+               Key_F3            => 292,
+               Key_F4            => 293,
+               Key_F5            => 294,
+               Key_F6            => 295,
+               Key_F7            => 296,
+               Key_F8            => 297,
+               Key_F9            => 298,
+               Key_F10           => 299,
+               Key_F11           => 300,
+               Key_F12           => 301,
+               Key_Pad_0         => 320,
+               Key_Pad_1         => 321,
+               Key_Pad_2         => 322,
+               Key_Pad_3         => 323,
+               Key_Pad_4         => 324,
+               Key_Pad_5         => 325,
+               Key_Pad_6         => 326,
+               Key_Pad_7         => 327,
+               Key_Pad_8         => 328,
+               Key_Pad_9         => 329,
+               Key_Pad_Decimal   => 330,
+               Key_Pad_Divide    => 331,
+               Key_Pad_Multiply  => 332,
+               Key_Pad_Subtract  => 333,
+               Key_Pad_Add       => 334,
+               Key_Pad_Enter     => 335,
+               Key_Pad_Equal     => 336,
+               Key_Left_Shift    => 340,
+               Key_Left_Control  => 341,
+               Key_Left_Alt      => 342,
+               Key_Left_Super    => 343,
+               Key_Right_Shift   => 344,
+               Key_Right_Control => 345,
+               Key_Right_Alt     => 346,
+               Key_Right_Super   => 347,
+               Key_KB_Menu       => 348
+       );
+
+       type Mouse_Button is (
+               Mouse_Button_Left,
+               Mouse_Button_Right,
+               Mouse_Button_Middle,
+               Mouse_Button_Side,
+               Mouse_Button_Extra,
+               Mouse_Button_Forward,
+               Mouse_Button_Back
+       ) with Convention => C;
+
+       type Mouse_Cursor is (
+               Mouse_Cursor_Default,
+               Mouse_Cursor_Arrow,
+               Mouse_Cursor_Ibeam,
+               Mouse_Cursor_Crosshair,
+               Mouse_Cursor_Pointing_Hand,
+               Mouse_Cursor_Resize_EW,
+               Mouse_Cursor_Resize_NS,
+               Mouse_Cursor_Resize_NWSE,
+               Mouse_Cursor_Resize_NESW,
+               Mouse_Cursor_Resize_All,
+               Mouse_Cursor_Not_Allowed
+       ) with Convention => C;
+
+       type Gamepad_Button is (
+               Gamepad_Button_Unknown,
+               Gamepad_Button_Left_Face_Up,
+               Gamepad_Button_Left_Face_Right,
+               Gamepad_Button_Left_Face_Down,
+               Gamepad_Button_Left_Face_Left,
+               Gamepad_Button_Right_Face_Up,
+               Gamepad_Button_Right_Face_Right,
+               Gamepad_Button_Right_Face_Down,
+               Gamepad_Button_Right_Face_Left,
+               Gamepad_Button_Left_Trigger_1,
+               Gamepad_Button_Left_Trigger_2,
+               Gamepad_Button_Right_Trigger_1,
+               Gamepad_Button_Right_Trigger_2,
+               Gamepad_Button_Middle_Left,
+               Gamepad_Button_Middle,
+               Gamepad_Button_Middle_Right,
+               Gamepad_Button_Left_Thumb,
+               Gamepad_Button_Right_Thumb
+       ) with Convention => C;
+
+       type Gamepad_Axis is (
+               Gamepad_Axis_Left_X,
+               Gamepad_Axis_Left_Y,
+               Gamepad_Axis_Right_X,
+               Gamepad_Axis_Right_Y,
+               Gamepad_Axis_Left_Trigger,
+               Gamepad_Axis_Right_Trigger
+       ) with Convention => C;
+
+       type Material_Map_Index is (
+               Material_Map_Diffuse,
+               Material_Map_Specular,
+               Material_Map_Normal,
+               Material_Map_Roughness,
+               Material_Map_Occlusion,
+               Material_Map_Emission,
+               Material_Map_Height,
+               Material_Map_Cubemap,
+               Material_Map_Irradiance,
+               Material_Map_Prefilter,
+               Material_Map_BRDF
+       ) with Convention => C;
+
+       type Shader_Location_Index is (
+               Shader_Location_Vertex_Position,
+               Shader_Location_Vertex_Texcoord_1,
+               Shader_Location_Vertex_Texcoord_2,
+               Shader_Location_Vertex_Normal,
+               Shader_Location_Vertex_Tangent,
+               Shader_Location_Vertex_Color,
+               Shader_Location_Matrix_MVP,
+               Shader_Location_Matrix_View,
+               Shader_Location_Matrix_Projection,
+               Shader_Location_Matrix_Model,
+               Shader_Location_Matrix_Normal,
+               Shader_Location_Vector_View,
+               Shader_Location_Color_Diffuse,
+               Shader_Location_Color_Specular,
+               Shader_Location_Color_Ambient,
+               Shader_Location_Map_Diffuse,
+               Shader_Location_Map_Specular,
+               Shader_Location_Map_Normal,
+               Shader_Location_Map_Roughness,
+               Shader_Location_Map_Occlusion,
+               Shader_Location_Map_Emission,
+               Shader_Location_Map_Height,
+               Shader_Location_Map_Cubemap,
+               Shader_Location_Map_Irradiance,
+               Shader_Location_Map_Prefilter,
+               Shader_Location_Map_BRDF
+       ) with Convention => C;
+
+       type Shader_Uniform_Data_Type is (
+               Shader_Uniform_FLOAT,
+               Shader_Uniform_VEC2,
+               Shader_Uniform_VEC3,
+               Shader_Uniform_VEC4,
+               Shader_Uniform_INT,
+               Shader_Uniform_IVEC2,
+               Shader_Uniform_IVEC3,
+               Shader_Uniform_IVEC4,
+               Shader_Uniform_SAMPLER2D
+       ) with Convention => C;
+
+       type Shader_Attribute_Data_Type is (
+               Shader_Attribute_FLOAT,
+               Shader_Attribute_VEC2,
+               Shader_Attribute_VEC3,
+               Shader_Attribute_VEC4
+       ) with Convention => C;
+
+       type Pixel_Format is (
+               Pixel_Format_None,
+               Pixel_Format_Uncompressed_Grayscale,
+               Pixel_Format_Uncompressed_Gray_Alpha,
+               Pixel_Format_Uncompressed_R5G6B5,
+               Pixel_Format_Uncompressed_R8G8B8,
+               Pixel_Format_Uncompressed_R5G5B5A1,
+               Pixel_Format_Uncompressed_R4G4B4A4,
+               Pixel_Format_Uncompressed_R8G8B8A8,
+               Pixel_Format_Uncompressed_R32,
+               Pixel_Format_Uncompressed_R32G32B32,
+               Pixel_Format_Uncompressed_R32G32B32A32,
+               Pixel_Format_Uncompressed_R16,
+               Pixel_Format_Uncompressed_R16G16B16,
+               Pixel_Format_Uncompressed_R16G16B16A16,
+               Pixel_Format_Compressed_DXT1_RGB,
+               Pixel_Format_Compressed_DXT1_RGBA,
+               Pixel_Format_Compressed_DXT3_RGBA,
+               Pixel_Format_Compressed_DXT5_RGBA,
+               Pixel_Format_Compressed_ETC1_RGB,
+               Pixel_Format_Compressed_ETC2_RGB,
+               Pixel_Format_Compressed_ETC2_EAC_RGBA,
+               Pixel_Format_Compressed_PVRT_RGB,
+               Pixel_Format_Compressed_PVRT_RGBA,
+               Pixel_Format_Compressed_ASTC_4x4_RGBA,
+               Pixel_Format_Compressed_ASTC_8x8_RGBA
+       ) with Convention => C;
+
+       type Texture_Filter is (
+               Texture_Filter_Point,
+               Texture_Filter_Bilinear,
+               Texture_Filter_Trilinear,
+               Texture_Filter_Anisotropic_x4,
+               Texture_Filter_Anisotropic_x8,
+               Texture_Filter_Anisotropic_x16
+       ) with Convention => C;
+
+       type Texture_Wrap is (
+               Texture_Wrap_Repeat,
+               Texture_Wrap_Clamp,
+               Texture_Wrap_Mirror_Repeat,
+               Texture_Wrap_Mirror_Clamp
+       ) with Convention => C;
+
+       type Cubemap_Layout is (
+               Cubemap_Layout_Auto_Detect,
+               Cubemap_Layout_Line_Vertical,
+               Cubemap_Layout_Line_Horizontal,
+               Cubemap_Layout_Cross_3_By_4,
+               Cubemap_Layout_Cross_4_By_3,
+               Cubemap_Layout_Panorama
+       ) with Convention => C;
+
+       type Font_Type is (
+               Font_Default,
+               Font_Bitmap,
+               Font_SDF
+       ) with Convention => C;
+
+       type Blend_Mode is (
+               Blend_Alpha,
+               Blend_Additive,
+               Blend_Multiplied,
+               Blend_Add_Colors,
+               Blend_Subtract_Colors,
+               Blend_Alpha_Premultiply,
+               Blend_Custom,
+               Blend_Custom_Separate
+       ) with Convention => C;
+
+       type Gesture is (
+               Gesture_None,
+               Gesture_Tap,
+               Gesture_Doubletap,
+               Gesture_Hold,
+               Gesture_Drag,
+               Gesture_Swipe_Right,
+               Gesture_Swipe_Left,
+               Gesture_Swipe_Up,
+               Gesture_Swipe_Down,
+               Gesture_Pinch_In,
+               Gesture_Pinch_Out
+       ) with Convention => C;
+
+       for Gesture use (
+               Gesture_None        => 0,
+               Gesture_Tap         => 1,
+               Gesture_Doubletap   => 2,
+               Gesture_Hold        => 4,
+               Gesture_Drag        => 8,
+               Gesture_Swipe_Right => 16,
+               Gesture_Swipe_Left  => 32,
+               Gesture_Swipe_Up    => 64,
+               Gesture_Swipe_Down  => 128,
+               Gesture_Pinch_In    => 256,
+               Gesture_Pinch_Out   => 512
+       );
+
+       type Camera_Mode is (
+               Camera_Custom,
+               Camera_Free,
+               Camera_Orbital,
+               Camera_First_Person,
+               Camera_Third_Person
+       ) with Convention => C;
+
+       type Camera_Projection is (
+               Camera_Perspective,
+               Camera_Orthographic
+       ) with Convention => C;
+
+       type NPatch_Layout is (
+               NPatch_Nine_Patch,
+               NPatch_Three_Patch_Vertical,
+               NPatch_Three_Patch_Horizontal
+       ) with Convention => C;
+
+------------------------------------------------------------------------
+
+       type Color_Range is range 0 .. 2**8  - 1;
+       type Index_Range is range 0 .. 2**16 - 1;
+
+       type Pointer is access all System.Address;
+
+       type Vector_2D is record
+               X : Float := 0.0;
+               Y : Float := 0.0;
+       end record with Convention => C_Pass_By_Copy;
+
+       type Vector_3D is record
+               X : Float := 0.0;
+               Y : Float := 0.0;
+               Z : Float := 0.0;
+       end record with Convention => C_Pass_By_Copy;
+
+       type Vector_4D is record
+               X : Float := 0.0;
+               Y : Float := 0.0;
+               Z : Float := 0.0;
+               W : Float := 0.0;
+       end record with Convention => C_Pass_By_Copy;
+
+       type Quaternion is new Vector_4D;
+
+       type Matrix_4D is record
+               --~M00, M10, M20, M30,
+               --~M01, M11, M21, M31,
+               --~M02, M12, M22, M32,
+               --~M03, M13, M23, M33 : Float := (
+               --~1.0, 0.0, 0.0, 0.0,
+               --~0.0, 1.0, 0.0, 0.0,
+               --~0.0, 0.0, 1.0, 0.0,
+               --~0.0, 0.0, 0.0, 1.0);
+               M00, M10, M20, M30,
+               M01, M11, M21, M31,
+               M02, M12, M22, M32,
+               M03, M13, M23, M33 : Float;
+       end record with Convention => C_Pass_By_Copy;
+
+       Id_Matrix : Matrix_4D;
+
+       type Color is record
+               R : Color_Range := 255;
+               G : Color_Range := 255;
+               B : Color_Range := 255;
+               A : Color_Range := 255;
+       end record with Convention => C_Pass_By_Copy;
+
+       No_Color : Color;
+
+       type Rectangle is record
+               X      : Float := 0.0;
+               Y      : Float := 0.0;
+               Width  : Float := 0.0;
+               Height : Float := 0.0;
+       end record with Convention => C_Pass_By_Copy;
+
+       No_Rectangle : Rectangle;
+
+       type Image is record
+               Data    : Pointer      := null;
+               Width   : Integer      := 0;
+               Height  : Integer      := 0;
+               Mipmaps : Integer      := 1;
+               Format  : Pixel_Format := Pixel_Format_None;
+       end record with Convention => C_Pass_By_Copy;
+
+       No_Image : Image;
+
+       type Texture is record
+               Id      : Natural      := 0;
+               Width   : Integer      := 0;
+               Height  : Integer      := 0;
+               Mipmaps : Integer      := 1;
+               Format  : Pixel_Format := Pixel_Format_None;
+       end record with Convention => C_Pass_By_Copy;
+
+       No_Texture : Texture;
+
+       type Render_Texture is record
+               Id    : Natural := 0;
+               Data  : Texture := No_Texture;
+               Depth : Texture := No_Texture;
+       end record with Convention => C_Pass_By_Copy;
+
+       No_Render_Texture : Render_Texture;
+
+       type NPatch_Info is record
+               Source : Rectangle     := No_Rectangle;
+               Left   : Integer       := 0;
+               Top    : Integer       := 0;
+               Right  : Integer       := 0;
+               Bottom : Integer       := 0;
+               Layout : NPatch_Layout := NPatch_Nine_Patch;
+       end record with Convention => C_Pass_By_Copy;
+
+       type Glyph_Info is record
+               Value     : Integer := 0;
+               Offset_X  : Integer := 0;
+               Offset_Y  : Integer := 0;
+               Advance_X : Integer := 0;
+               Data      : Image   := No_Image;
+       end record with Convention => C_Pass_By_Copy;
+
+       type Font is record
+               Base_Size     :        Integer    := 0;
+               Glyph_Count   :        Integer    := 0;
+               Glyph_Padding :        Integer    := 0;
+               Data          :        Texture    := No_Texture;
+               Rectangles    : access Rectangle  := null;
+               Glyphs        : access Glyph_Info := null;
+       end record with Convention => C_Pass_By_Copy;
+
+       type Camera_3D is record
+               Position      : Vector_3D         := (0.0, 0.0, 0.0);
+               Target        : Vector_3D         := (0.0, 0.0, 0.0);
+               Up            : Vector_3D         := (0.0, 0.0, 0.0);
+               Field_Of_View : Float             := 0.0;
+               Projection    : Camera_Projection := Camera_Perspective;
+       end record with Convention => C_Pass_By_Copy;
+
+       type Camera_2D is record
+               Offset   : Vector_2D := (0.0, 0.0);
+               Target   : Vector_2D := (0.0, 0.0);
+               Rotation : Float     := 0.0;
+               Zoom     : Float     := 0.0;
+       end record with Convention => C_Pass_By_Copy;
+
+       type Mesh is record
+               Vertex_Count          :        Integer     := 0;
+               Triangle_Count        :        Integer     := 0;
+               Vertices              : access Float       := null;
+               Texture_Coordinates   : access Float       := null;
+               Texture_Coordinates_2 : access Float       := null;
+               Normals               : access Float       := null;
+               Tangents              : access Float       := null;
+               Colors                : access Color_Range := null;
+               Indices               : access Index_Range := null;
+               Animation_Vertices    : access Float       := null;
+               Animation_Normals     : access Float       := null;
+               Bone_Ids              : access Color_Range := null;
+               Bone_Weights          : access Float       := null;
+               VAO_Id                :        Natural     := 0;
+               VBO_Id                : access Natural     := null;
+       end record with Convention => C_Pass_By_Copy;
+
+       No_Mesh : Mesh;
+
+       type Shader is record
+               Id        :        Natural := 0;
+               Locations : access Integer := null;
+       end record with Convention => C_Pass_By_Copy;
+
+       No_Shader : Shader;
+
+       type Material_Map is record
+               Data  : Texture := No_Texture;
+               Tint  : Color   := No_Color;
+               Value : Float   := 0.0;
+       end record with Convention => C_Pass_By_Copy;
+
+       type Float_Array_4 is array (0 .. 3) of Float;
+
+       type Material is record
+               Data      : Shader              := No_Shader;
+               Map       : access Material_Map := null;
+               Parameter : Float_Array_4       := (0.0, 0.0, 0.0, 0.0);
+       end record with Convention => C_Pass_By_Copy;
+
+       type Transform is record
+               Translation : Vector_3D := (0.0, 0.0, 0.0);
+               Rotation    : Vector_4D := (0.0, 0.0, 0.0, 0.0);
+               Scale       : Vector_3D := (0.0, 0.0, 0.0);
+       end record with Convention => C_Pass_By_Copy;
+
+       type Character_Array_32 is array (0 .. 31) of Character;
+
+       Empty : Character_Array_32 := (others => Character'Val (0));
+
+       type Bone_Info is record
+               Name   : Character_Array_32 := Empty;
+               Parent : Integer            := 0;
+       end record with Convention => C_Pass_By_Copy;
+
+       type Model is record
+               Transform      :        Matrix_4D := Id_Matrix;
+               Mesh_Count     :        Integer   := 0;
+               Material_Count :        Integer   := 0;
+               Meshes         : access Mesh      := null;
+               Materials      : access Material  := null;
+               Mesh_Materials : access Integer   := null;
+               Bone_Count     :        Integer   := 0;
+               Bones          : access Bone_Info := null;
+               --~Bind_Post      : access Transform := null; ERROR
+       end record with Convention => C_Pass_By_Copy;
+
+       type Model_Animation is record
+               Bone_Count  :        Integer            := 0;
+               Frame_Count :        Integer            := 0;
+               Bones       : access Bone_Info          := null;
+               Frame_Poses : access Transform          := null;
+               Name        :        Character_Array_32 := Empty;
+       end record with Convention => C_Pass_By_Copy;
+
+       type Ray is record
+               Position  : Vector_3D := (0.0, 0.0, 0.0);
+               Direction : Vector_3D := (0.0, 0.0, 0.0);
+       end record with Convention => C_Pass_By_Copy;
+
+       type Ray_Collision is record
+               Hit      : Boolean   := False;
+               Distance : Float     := 0.0;
+               Point    : Vector_3D := (0.0, 0.0, 0.0);
+               Normal   : Vector_3D := (0.0, 0.0, 0.0);
+       end record;
+
+       type Bounding_Box is record
+               Min : Vector_3D := (0.0, 0.0, 0.0);
+               Max : Vector_3D := (0.0, 0.0, 0.0);
+       end record;
+
+       type Wave is record
+               Frame_Count : Natural := 0;
+               Sample_Rate : Natural := 0;
+               Sample_Size : Natural := 0;
+               Channels    : Natural := 0;
+               Data        : Pointer := null;
+       end record;
+
+       type Audio_Stream is record
+               Buffer      : Pointer := null;
+               Processor   : Pointer := null;
+               Sample_Rate : Natural := 0;
+               Sample_Size : Natural := 0;
+               Channels    : Natural := 0;
+       end record;
+
+       No_Audio_Stream : Audio_Stream;
+
+       type Sound is record
+               Stream      : Audio_Stream := No_Audio_Stream;
+               Frame_Count : Natural      := 0;
+       end record;
+
+       type Music is record
+               Stream       : Audio_Stream := No_Audio_Stream;
+               Frame_Count  : Natural      := 0;
+               Looping      : Boolean      := False;
+               Context_Type : Integer      := 0;
+               Context_Data : Pointer      := null;
+       end record;
+
+       type VR_Device_Info is record
+               Horizontal_Resoultion        : Integer       := 0;
+               Vertical_Resoultion          : Integer       := 0;
+               Horizontal_Screen_Size       : Float         := 0.0;
+               Vertical_Screen_Size         : Float         := 0.0;
+               Vertical_Screen_Center       : Float         := 0.0;
+               Eye_To_Screen_Distance       : Float         := 0.0;
+               Lens_Separate_Distance       : Float         := 0.0;
+               Interpupillary_Distance      : Float         := 0.0;
+               Lens_Distortion_Values       : Float_Array_4 := (0.0, 0.0, 0.0, 0.0);
+               Chroma_Abberation_Correction : Float_Array_4 := (0.0, 0.0, 0.0, 0.0);
+       end record;
+
+       No_VR_Device_Info : VR_Device_Info;
+
+       type Matrix_4D_Array_2 is array (0 .. 1) of Matrix_4D;
+       type Float_Array_2     is array (0 .. 1) of Float;
+
+       type VR_Stereo_Config is record
+               Projection          : Matrix_4D_Array_2 := (Id_Matrix, Id_Matrix);
+               View_Offset         : Matrix_4D_Array_2 := (Id_Matrix, Id_Matrix);
+               Left_Lens_Center    : Float_Array_2     := (0.0, 0.0);
+               Right_Lens_Center   : Float_Array_2     := (0.0, 0.0);
+               Left_Screen_Center  : Float_Array_2     := (0.0, 0.0);
+               Right_Screen_Center : Float_Array_2     := (0.0, 0.0);
+               Scale               : Float_Array_2     := (0.0, 0.0);
+               Scale_In            : Float_Array_2     := (0.0, 0.0);
+       end record;
+
+       No_VR_Stereo_Config : VR_Stereo_Config;
+
+       type File_Path_List is record
+               Capacity : Natural := 0;
+               Count    : Natural := 0;
+               Paths    : Pointer := null;
+       end record;
+
+       type Integer_Array_4 is array (0 .. 3) of Integer;
+
+       type Automation_Event is record
+               Frame      : Natural         := 0;
+               Kind       : Natural         := 0;
+               Parameters : Integer_Array_4 := (0, 0, 0, 0);
+       end record;
+
+       type Automation_Event_List is record
+               Capacity :        Natural          := 0;
+               Count    :        Natural          := 0;
+               Events   : access Automation_Event := null;
+       end record;
+
+------------------------------------------------------------------------
+
+       Version_Major :         constant Integer := 5;
+       Version_Minor :         constant Integer := 1;
+       Version_Patch :         constant Integer := 0;
+       Version       : aliased constant String  := "5.1-dev";
+
+       Pi               : constant Float := 3.14159265358979323846;
+       Tau              : constant Float := 2.0 * Pi;
+       Degree_To_Radius : constant Float := Pi / 180.0;
+       Radius_To_Degree : constant Float := 180.0 / Pi;
+
+       Light_Gray  : constant Color := (200, 200, 200, 255);
+       Gray        : constant Color := (130, 130, 130, 255);
+       Dark_Gray   : constant Color := (80,  80,  80,  255);
+       Yellow      : constant Color := (253, 249, 0,   255);
+       Gold        : constant Color := (255, 203, 0,   255);
+       Orange      : constant Color := (255, 161, 0,   255);
+       Pink        : constant Color := (255, 109, 194, 255);
+       Red         : constant Color := (230, 41,  55,  255);
+       Maroon      : constant Color := (190, 33,  55,  255);
+       Green       : constant Color := (0,   228, 48,  255);
+       Lime        : constant Color := (0,   158, 47,  255);
+       Dark_Green  : constant Color := (0,   117, 44,  255);
+       Sky_Blue    : constant Color := (102, 191, 255, 255);
+       Blue        : constant Color := (0,   121, 241, 255);
+       Dark_Blue   : constant Color := (0,   82,  172, 255);
+       Purple      : constant Color := (200, 122, 255, 255);
+       Violet      : constant Color := (135, 60,  190, 255);
+       Dark_Purple : constant Color := (112, 31,  126, 255);
+       Beige       : constant Color := (211, 176, 131, 255);
+       Brown       : constant Color := (127, 106, 79,  255);
+       Dark_Brown  : constant Color := (76,  63,  47,  255);
+       White       : constant Color := (255, 255, 255, 255);
+       Black       : constant Color := (0,   0,   0,   255);
+       Blank       : constant Color := (0,   0,   0,   0  );
+       Magenta     : constant Color := (255, 0,   255, 255);
+       Ray_White   : constant Color := (245, 245, 245, 255);
+
+------------------------------------------------------------------------
+
+--~typedef void (*TraceLogCallback)(int logLevel, const char *text, va_list args);  -- Logging: Redirect trace log messages
+--~typedef unsigned char *(*LoadFileDataCallback)(const char *fileName, int *dataSize);    -- FileIO: Load binary data
+--~typedef bool (*SaveFileDataCallback)(const char *fileName, void *data, int dataSize);   -- FileIO: Save binary data
+--~typedef char *(*LoadFileTextCallback)(const char *fileName);            -- FileIO: Load text data
+--~typedef bool (*SaveFileTextCallback)(const char *fileName, char *text); -- FileIO: Save text data
+
+       procedure Open_Window (
+               Width  : Integer := 640;
+               Height : Integer := 480;
+               Title  : String  := ""
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "InitWindow";
+
+       procedure Close_Window with
+               Import        => True,
+               Convention    => C,
+               External_Name => "CloseWindow";
+
+       function Window_Should_Close return Boolean with
+               Import        => True,
+               Convention    => C,
+               External_Name => "WindowShouldClose";
+
+       function Is_Window_Ready return Boolean with
+               Import        => True,
+               Convention    => C,
+               External_Name => "IsWindowReady";
+
+       function Is_Window_Fullscreen return Boolean with
+               Import        => True,
+               Convention    => C,
+               External_Name => "IsWindowFullscreen";
+
+       function Is_Window_Hidden return Boolean with
+               Import        => True,
+               Convention    => C,
+               External_Name => "IsWindowHidden";
+
+       function Is_Window_Minimized return Boolean with
+               Import        => True,
+               Convention    => C,
+               External_Name => "IsWindowMinimized";
+
+       function Is_Window_Maximized return Boolean with
+               Import        => True,
+               Convention    => C,
+               External_Name => "IsWindowMaximized";
+
+       function Is_Window_Focused return Boolean with
+               Import        => True,
+               Convention    => C,
+               External_Name => "IsWindowFocused";
+
+       function Is_Window_Resized return Boolean with
+               Import        => True,
+               Convention    => C,
+               External_Name => "IsWindowResized";
+
+       function Is_Window_State (
+               Flags : Natural := 0
+       ) return Boolean with
+               Import        => True,
+               Convention    => C,
+               External_Name => "IsWindowState";
+
+       procedure Set_Window_State (
+               Flags : Natural := 0
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "SetWindowState";
+
+       procedure Clear_Window_State (
+               Flags : Natural := 0
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "ClearWindowState";
+
+       procedure Toggle_Fullscreen with
+               Import        => True,
+               Convention    => C,
+               External_Name => "ToggleFullscreen";
+
+       procedure Toggle_Borderless_Windowed with
+               Import        => True,
+               Convention    => C,
+               External_Name => "ToggleBorderlessWindowed";
+
+       procedure Maximize_Window with
+               Import        => True,
+               Convention    => C,
+               External_Name => "MaximizeWindow";
+
+       procedure Minimize_Window with
+               Import        => True,
+               Convention    => C,
+               External_Name => "MinimizeWindow";
+
+       procedure Restore_Window with
+               Import        => True,
+               Convention    => C,
+               External_Name => "RestoreWindow";
+
+       procedure Set_Window_Icon (
+               Icon : Image := No_Image
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "SetWindowIcon";
+
+       procedure Set_Window_Icons (
+               Icons : access Image   := null;
+               Count :        Integer := 0
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "SetWindowIcons";
+
+       procedure Set_Window_Title (
+               Title : String := ""
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "SetWindowTitle";
+
+       procedure Set_Window_Position (
+               X : Integer := 0;
+               Y : Integer := 0
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "SetWindowPosition";
+
+       procedure Set_Window_Monitor (
+               Monitor : Integer := 0
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "SetWindowMonitor";
+
+       procedure Set_Window_Min_Size (
+               Width  : Integer := 0;
+               Height : Integer := 0
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "SetWindowMinSize";
+
+       procedure Set_Window_Max_Size (
+               Width  : Integer := 0;
+               Height : Integer := 0
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "SetWindowMaxSize";
+
+       procedure Set_Window_Size (
+               Width  : Integer := 0;
+               Height : Integer := 0
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "SetWindowSize";
+
+       procedure Set_WindowZ_Opacity (
+               Opacity : Float := 0.0
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "SetWindowOpacity";
+
+       procedure Set_Window_Focused with
+               Import        => True,
+               Convention    => C,
+               External_Name => "SetWindowFocused";
+
+       function Get_Window_Handle return Pointer with
+               Import        => True,
+               Convention    => C,
+               External_Name => "GetWindowHandle";
+
+       function Get_Screen_Width return Integer with
+               Import        => True,
+               Convention    => C,
+               External_Name => "GetScreenWidth";
+
+       function Get_Screen_Height return Integer with
+               Import        => True,
+               Convention    => C,
+               External_Name => "GetScreenHeight";
+
+       function Get_Render_Width return Integer with
+               Import        => True,
+               Convention    => C,
+               External_Name => "GetRenderWidth";
+
+       function Get_Render_Height return Integer with
+               Import        => True,
+               Convention    => C,
+               External_Name => "GetRenderHeight";
+
+       function Get_Monitor_Count return Integer with
+               Import        => True,
+               Convention    => C,
+               External_Name => "GetMonitorCount";
+
+       function Get_Current_Monitor return Integer with
+               Import        => True,
+               Convention    => C,
+               External_Name => "GetCurrentMonitor";
+
+       function Get_Monitor_Position (
+               Monitor : Integer := 0
+       ) return Vector_2D with
+               Import        => True,
+               Convention    => C,
+               External_Name => "GetMonitorPosition";
+
+       function Get_Monitor_Width (
+               Monitor : Integer := 0
+       ) return Integer with
+               Import        => True,
+               Convention    => C,
+               External_Name => "GetMonitorWidth";
+
+       function Get_Monitor_Height (
+               Monitor : Integer := 0
+       ) return Integer with
+               Import        => True,
+               Convention    => C,
+               External_Name => "GetMonitorHeight";
+
+       function Get_Monitor_Physical_Width (
+               Monitor : Integer := 0
+       ) return Integer with
+               Import        => True,
+               Convention    => C,
+               External_Name => "GetMonitorPhysicalWidth";
+
+       function Get_Monitor_Physical_Height (
+               Monitor : Integer := 0
+       ) return Integer with
+               Import        => True,
+               Convention    => C,
+               External_Name => "GetMonitorPhysicalHeight";
+
+       function Get_Monitor_Refresh_Rate (
+               Monitor : Integer := 0
+       ) return Integer with
+               Import        => True,
+               Convention    => C,
+               External_Name => "GetMonitorRefreshRate";
+
+       function Get_Window_Position return Vector_2D with
+               Import        => True,
+               Convention    => C,
+               External_Name => "GetWindowPosition";
+
+       function Get_Window_Scale_DPI return Vector_2D with
+               Import        => True,
+               Convention    => C,
+               External_Name => "GetWindowScaleDPI";
+
+       function Get_Monitor_Name (
+               Monitor : Integer := 0
+       ) return Pointer with
+               Import        => True,
+               Convention    => C,
+               External_Name => "GetMonitorName";
+
+       procedure Set_Clipboard_Text (
+               Text : String := ""
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "SetClipboardText";
+
+       function Get_Clipboard_Text return Pointer with
+               Import        => True,
+               Convention    => C,
+               External_Name => "GetClipboardText";
+
+       procedure Enable_Event_Waiting with
+               Import        => True,
+               Convention    => C,
+               External_Name => "EnableEventWaiting";
+
+       procedure Disable_Event_Waiting with
+               Import        => True,
+               Convention    => C,
+               External_Name => "DisableEventWaiting";
+
+       procedure Show_Cursor with
+               Import        => True,
+               Convention    => C,
+               External_Name => "ShowCursor";
+
+       procedure Hide_Cursor with
+               Import        => True,
+               Convention    => C,
+               External_Name => "HideCursor";
+
+       function Is_Cursor_Hidden return Boolean with
+               Import        => True,
+               Convention    => C,
+               External_Name => "IsCursorHidden";
+
+       procedure Enable_Cursor with
+               Import        => True,
+               Convention    => C,
+               External_Name => "EnableCursor";
+
+       procedure Disable_Cursor with
+               Import        => True,
+               Convention    => C,
+               External_Name => "DisableCursor";
+
+       function Is_Cursor_On_Screen return Boolean with
+               Import        => True,
+               Convention    => C,
+               External_Name => "IsCursorOnScreen";
+
+       procedure Clear_Background (
+               Tint : Color := Ray_White
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "ClearBackground";
+
+       procedure Begin_Drawing with
+               Import        => True,
+               Convention    => C,
+               External_Name => "BeginDrawing";
+
+       procedure End_Drawing with
+               Import        => True,
+               Convention    => C,
+               External_Name => "EndDrawing";
+
+       procedure Begin_Mode_2D (
+               Camera : Camera_2D
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "BeginMode2D";
+
+       procedure End_Mode_2D with
+               Import        => True,
+               Convention    => C,
+               External_Name => "EndMode2D";
+
+       procedure Begin_Mode_3D (
+               Camera : Camera_3D
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "BeginMode3D";
+
+       procedure End_Mode_3D with
+               Import        => True,
+               Convention    => C,
+               External_Name => "EndMode3D";
+
+       procedure Begin_Texture_Mode (
+               Data : Render_Texture := No_Render_Texture
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "BeginTextureMode";
+
+       procedure End_Texture_Mode with
+               Import        => True,
+               Convention    => C,
+               External_Name => "EndTextureMode";
+
+       procedure Begin_Shader_Mode (
+               Data : Shader := No_Shader
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "BeginShaderMode";
+
+       procedure End_Shader_Mode with
+               Import        => True,
+               Convention    => C,
+               External_Name => "EndShaderMode";
+
+       procedure Begin_Blend_Mode (
+               Mode : Blend_Mode := Blend_Alpha
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "BeginBlendMode";
+
+       procedure End_Blend_Mode with
+               Import        => True,
+               Convention    => C,
+               External_Name => "EndBlendMode";
+
+       procedure Begin_Scissor_Mode (
+               X      : Integer := 0;
+               Y      : Integer := 0;
+               Width  : Integer := 0;
+               Height : Integer := 0
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "BeginScissorMode";
+
+       procedure End_Scissor_Mode with
+               Import        => True,
+               Convention    => C,
+               External_Name => "EndScissorMode";
+
+       procedure Begin_VR_Stereo_Mode (
+               Config : VR_Stereo_Config := No_VR_Stereo_Config
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "BeginVrStereoMode";
+
+       procedure End_VR_Stereo_Mode with
+               Import        => True,
+               Convention    => C,
+               External_Name => "EndVrStereoMode";
+
+       function Load_VR_Stereo_Config (
+               Device : VR_Device_Info := No_VR_Device_Info
+       ) return VR_Stereo_Config with
+               Import        => True,
+               Convention    => C,
+               External_Name => "LoadVrStereoConfig";
+
+       procedure Unload_VR_Stereo_Config (
+               Config : VR_Stereo_Config := No_VR_Stereo_Config
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "UnloadVrStereoConfig";
+
+       function Load_Shader (
+               Vertex_Shader_File_Path   : String := "";
+               Fragment_Shader_File_Path : String := ""
+       ) return Shader with
+               Import        => True,
+               Convention    => C,
+               External_Name => "LoadShader";
+
+       function Load_Shader_From_Memory (
+               Vertex_Shader_Code_Path   : String := "";
+               Fragment_Shader_Code_Path : String := ""
+       ) return Shader with
+               Import        => True,
+               Convention    => C,
+               External_Name => "LoadShaderFromMemory";
+
+       function Is_Shader_Ready (
+               Data : Shader := No_Shader
+       ) return Boolean with
+               Import        => True,
+               Convention    => C,
+               External_Name => "IsShaderReady";
+
+       function Get_Shader_Location (
+               Data : Shader := No_Shader;
+               Name : String := ""
+       ) return Integer with
+               Import        => True,
+               Convention    => C,
+               External_Name => "GetShaderLocation";
+
+       function Get_Shader_Location_Attribute (
+               Data : Shader := No_Shader;
+               Name : String := ""
+       ) return Integer with
+               Import        => True,
+               Convention    => C,
+               External_Name => "GetShaderLocationAttrib";
+
+       procedure Set_Shader_Value (
+               Data           : Shader  := No_Shader;
+               Location_Index : Integer := 0;
+               Value          : Pointer := null;
+               Uniform_Type   : Integer := 0
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "SetShaderValue";
+
+       procedure Set_Shader_Value_Vector (
+               Data           : Shader  := No_Shader;
+               Location_Index : Integer := 0;
+               Value          : Pointer := null;
+               Uniform_Type   : Integer := 0;
+               Count          : Integer := 0
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "SetShaderValueV";
+
+       procedure Set_Shader_Value_Matrix (
+               Data           : Shader    := No_Shader;
+               Location_Index : Integer   := 0;
+               Value          : Matrix_4D := Id_Matrix
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "SetShaderValueMatrix";
+
+       procedure Set_Shader_Value_Texture (
+               Data           : Shader  := No_Shader;
+               Location_Index : Integer := 0;
+               Value          : Texture := No_Texture
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "SetShaderValueTexture";
+
+       procedure Unload_Shader (
+               Data : Shader := No_Shader
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "UnloadShader";
+--~################################################################
+--~################################################################
+--~################################################################
+       --~function Ray GetMouseRay (Vector2 mousePosition, Camera camera) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Matrix GetCameraMatrix (Camera camera) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Matrix GetCameraMatrix2D (Camera2D camera) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Vector2 GetWorldToScreen (Vector3 position, Camera camera) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Vector2 GetScreenToWorld2D (Vector2 position, Camera2D camera) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Vector2 GetWorldToScreenEx (Vector3 position, Camera camera, int width, int height) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Vector2 GetWorldToScreen2D (Vector2 position, Camera2D camera) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetTargetFPS (int fps) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function float GetFrameTime (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function double GetTime (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int GetFPS (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SwapScreenBuffer (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure PollInputEvents (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure WaitTime (double seconds) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetRandomSeed (unsigned int seed) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int GetRandomValue (int min, int max) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int *LoadRandomSequence (unsigned int count, int min, int max) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadRandomSequence (int *sequence) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure TakeScreenshot (const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetConfigFlags (unsigned int flags) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure OpenURL (const char *url) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure TraceLog (int logLevel, const char *text, ...) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetTraceLogLevel (int logLevel) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure *MemAlloc (unsigned int size) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure *MemRealloc (void *ptr, unsigned int size) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure MemFree (void *ptr) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetTraceLogCallback (TraceLogCallback callback) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetLoadFileDataCallback (LoadFileDataCallback callback) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetSaveFileDataCallback (SaveFileDataCallback callback) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetLoadFileTextCallback (LoadFileTextCallback callback) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetSaveFileTextCallback (SaveFileTextCallback callback) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function unsigned char *LoadFileData (const char *fileName, int *dataSize) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadFileData (unsigned char *data) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool SaveFileData (const char *fileName, void *data, int dataSize) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool ExportDataAsCode (const unsigned char *data, int dataSize, const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function char *LoadFileText (const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadFileText (char *text) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool SaveFileText (const char *fileName, char *text) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool FileExists (const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool DirectoryExists (const char *dirPath) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsFileExtension (const char *fileName, const char *ext) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int GetFileLength (const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function const char *GetFileExtension (const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function const char *GetFileName (const char *filePath) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function const char *GetFileNameWithoutExt (const char *filePath) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function const char *GetDirectoryPath (const char *filePath) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function const char *GetPrevDirectoryPath (const char *dirPath) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function const char *GetWorkingDirectory (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function const char *GetApplicationDirectory (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool ChangeDirectory (const char *dir) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsPathFile (const char *path) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function FilePathList LoadDirectoryFiles (const char *dirPath) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function FilePathList LoadDirectoryFilesEx (const char *basePath, const char *filter, bool scanSubdirs) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadDirectoryFiles (FilePathList files) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsFileDropped (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function FilePathList LoadDroppedFiles (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadDroppedFiles (FilePathList files) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function long GetFileModTime (const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function unsigned char *CompressData (const unsigned char *data, int dataSize, int *compDataSize) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function unsigned char *DecompressData (const unsigned char *compData, int compDataSize, int *dataSize) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function char *EncodeDataBase64 (const unsigned char *data, int dataSize, int *outputSize) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function unsigned char *DecodeDataBase64 (const unsigned char *data, int *outputSize) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function AutomationEventList LoadAutomationEventList (const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadAutomationEventList (AutomationEventList *list) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool ExportAutomationEventList (AutomationEventList list, const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetAutomationEventList (AutomationEventList *list) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetAutomationEventBaseFrame (int frame) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure StartAutomationEventRecording (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure StopAutomationEventRecording (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure PlayAutomationEvent (AutomationEvent event) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsKeyPressed (int key) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsKeyPressedRepeat (int key) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsKeyDown (int key) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsKeyReleased (int key) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsKeyUp (int key) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int GetKeyPressed (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int GetCharPressed (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetExitKey (int key) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsGamepadAvailable (int gamepad) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function const char *GetGamepadName (int gamepad) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsGamepadButtonPressed (int gamepad, int button) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsGamepadButtonDown (int gamepad, int button) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsGamepadButtonReleased (int gamepad, int button) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsGamepadButtonUp (int gamepad, int button) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int GetGamepadButtonPressed (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int GetGamepadAxisCount (int gamepad) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function float GetGamepadAxisMovement (int gamepad, int axis) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int SetGamepadMappings (const char *mappings) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsMouseButtonPressed (int button) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsMouseButtonDown (int button) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsMouseButtonReleased (int button) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsMouseButtonUp (int button) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int GetMouseX (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int GetMouseY (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Vector2 GetMousePosition (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Vector2 GetMouseDelta (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetMousePosition (int x, int y) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetMouseOffset (int offsetX, int offsetY) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetMouseScale (float scaleX, float scaleY) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function float GetMouseWheelMove (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Vector2 GetMouseWheelMoveV (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetMouseCursor (int cursor) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int GetTouchX (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int GetTouchY (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Vector2 GetTouchPosition (int index) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int GetTouchPointId (int index) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int GetTouchPointCount (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetGesturesEnabled (unsigned int flags) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsGestureDetected (unsigned int gesture) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int GetGestureDetected (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function float GetGestureHoldDuration (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Vector2 GetGestureDragVector (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function float GetGestureDragAngle (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Vector2 GetGesturePinchVector (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function float GetGesturePinchAngle (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UpdateCamera (Camera *camera, int mode) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UpdateCameraPro (Camera *camera, Vector3 movement, Vector3 rotation, float zoom) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetShapesTexture (Texture2D texture, Rectangle source) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawPixel (int posX, int posY, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawPixelV (Vector2 position, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawLine (int startPosX, int startPosY, int endPosX, int endPosY, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawLineV (Vector2 startPos, Vector2 endPos, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawLineEx (Vector2 startPos, Vector2 endPos, float thick, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawLineStrip (Vector2 *points, int pointCount, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawLineBezier (Vector2 startPos, Vector2 endPos, float thick, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawCircle (int centerX, int centerY, float radius, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawCircleSector (Vector2 center, float radius, float startAngle, float endAngle, int segments, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawCircleSectorLines (Vector2 center, float radius, float startAngle, float endAngle, int segments, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawCircleGradient (int centerX, int centerY, float radius, Color color1, Color color2) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawCircleV (Vector2 center, float radius, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawCircleLines (int centerX, int centerY, float radius, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawCircleLinesV (Vector2 center, float radius, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawEllipse (int centerX, int centerY, float radiusH, float radiusV, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawEllipseLines (int centerX, int centerY, float radiusH, float radiusV, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawRing (Vector2 center, float innerRadius, float outerRadius, float startAngle, float endAngle, int segments, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawRingLines (Vector2 center, float innerRadius, float outerRadius, float startAngle, float endAngle, int segments, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawRectangle (int posX, int posY, int width, int height, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawRectangleV (Vector2 position, Vector2 size, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawRectangleRec (Rectangle rec, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawRectanglePro (Rectangle rec, Vector2 origin, float rotation, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawRectangleGradientV (int posX, int posY, int width, int height, Color color1, Color color2) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawRectangleGradientH (int posX, int posY, int width, int height, Color color1, Color color2) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawRectangleGradientEx (Rectangle rec, Color col1, Color col2, Color col3, Color col4) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawRectangleLines (int posX, int posY, int width, int height, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawRectangleLinesEx (Rectangle rec, float lineThick, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawRectangleRounded (Rectangle rec, float roundness, int segments, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawRectangleRoundedLines (Rectangle rec, float roundness, int segments, float lineThick, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawTriangle (Vector2 v1, Vector2 v2, Vector2 v3, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawTriangleLines (Vector2 v1, Vector2 v2, Vector2 v3, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawTriangleFan (Vector2 *points, int pointCount, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawTriangleStrip (Vector2 *points, int pointCount, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawPoly (Vector2 center, int sides, float radius, float rotation, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawPolyLines (Vector2 center, int sides, float radius, float rotation, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawPolyLinesEx (Vector2 center, int sides, float radius, float rotation, float lineThick, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawSplineLinear (Vector2 *points, int pointCount, float thick, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawSplineBasis (Vector2 *points, int pointCount, float thick, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawSplineCatmullRom (Vector2 *points, int pointCount, float thick, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawSplineBezierQuadratic (Vector2 *points, int pointCount, float thick, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawSplineBezierCubic (Vector2 *points, int pointCount, float thick, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawSplineSegmentLinear (Vector2 p1, Vector2 p2, float thick, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawSplineSegmentBasis (Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float thick, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawSplineSegmentCatmullRom (Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float thick, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawSplineSegmentBezierQuadratic (Vector2 p1, Vector2 c2, Vector2 p3, float thick, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawSplineSegmentBezierCubic (Vector2 p1, Vector2 c2, Vector2 c3, Vector2 p4, float thick, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Vector2 GetSplinePointLinear (Vector2 startPos, Vector2 endPos, float t) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Vector2 GetSplinePointBasis (Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float t) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Vector2 GetSplinePointCatmullRom (Vector2 p1, Vector2 p2, Vector2 p3, Vector2 p4, float t) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Vector2 GetSplinePointBezierQuad (Vector2 p1, Vector2 c2, Vector2 p3, float t) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Vector2 GetSplinePointBezierCubic (Vector2 p1, Vector2 c2, Vector2 c3, Vector2 p4, float t) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool CheckCollisionRecs (Rectangle rec1, Rectangle rec2) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool CheckCollisionCircles (Vector2 center1, float radius1, Vector2 center2, float radius2) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool CheckCollisionCircleRec (Vector2 center, float radius, Rectangle rec) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool CheckCollisionPointRec (Vector2 point, Rectangle rec) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool CheckCollisionPointCircle (Vector2 point, Vector2 center, float radius) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool CheckCollisionPointTriangle (Vector2 point, Vector2 p1, Vector2 p2, Vector2 p3) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool CheckCollisionPointPoly (Vector2 point, Vector2 *points, int pointCount) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool CheckCollisionLines (Vector2 startPos1, Vector2 endPos1, Vector2 startPos2, Vector2 endPos2, Vector2 *collisionPoint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool CheckCollisionPointLine (Vector2 point, Vector2 p1, Vector2 p2, int threshold) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Rectangle GetCollisionRec (Rectangle rec1, Rectangle rec2) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Image LoadImage (const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Image LoadImageRaw (const char *fileName, int width, int height, int format, int headerSize) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Image LoadImageSvg (const char *fileNameOrString, int width, int height) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Image LoadImageAnim (const char *fileName, int *frames) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Image LoadImageFromMemory (const char *fileType, const unsigned char *fileData, int dataSize) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Image LoadImageFromTexture (Texture2D texture) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Image LoadImageFromScreen (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsImageReady (Image image) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadImage (Image image) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool ExportImage (Image image, const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function unsigned char *ExportImageToMemory (Image image, const char *fileType, int *fileSize) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool ExportImageAsCode (Image image, const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Image GenImageColor (int width, int height, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Image GenImageGradientLinear (int width, int height, int direction, Color start, Color end) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Image GenImageGradientRadial (int width, int height, float density, Color inner, Color outer) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Image GenImageGradientSquare (int width, int height, float density, Color inner, Color outer) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Image GenImageChecked (int width, int height, int checksX, int checksY, Color col1, Color col2) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Image GenImageWhiteNoise (int width, int height, float factor) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Image GenImagePerlinNoise (int width, int height, int offsetX, int offsetY, float scale) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Image GenImageCellular (int width, int height, int tileSize) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Image GenImageText (int width, int height, const char *text) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Image ImageCopy (Image image) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Image ImageFromImage (Image image, Rectangle rec) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Image ImageText (const char *text, int fontSize, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Image ImageTextEx (Font font, const char *text, float fontSize, float spacing, Color tint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageFormat (Image *image, int newFormat) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageToPOT (Image *image, Color fill) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageCrop (Image *image, Rectangle crop) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageAlphaCrop (Image *image, float threshold) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageAlphaClear (Image *image, Color color, float threshold) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageAlphaMask (Image *image, Image alphaMask) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageAlphaPremultiply (Image *image) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageBlurGaussian (Image *image, int blurSize) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageKernelConvolution (Image *image, float* kernel, int kernelSize) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageResize (Image *image, int newWidth, int newHeight) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageResizeNN (Image *image, int newWidth,int newHeight) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageResizeCanvas (Image *image, int newWidth, int newHeight, int offsetX, int offsetY, Color fill) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageMipmaps (Image *image) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageDither (Image *image, int rBpp, int gBpp, int bBpp, int aBpp) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageFlipVertical (Image *image) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageFlipHorizontal (Image *image) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageRotate (Image *image, int degrees) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageRotateCW (Image *image) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageRotateCCW (Image *image) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageColorTint (Image *image, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageColorInvert (Image *image) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageColorGrayscale (Image *image) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageColorContrast (Image *image, float contrast) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageColorBrightness (Image *image, int brightness) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageColorReplace (Image *image, Color color, Color replace) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Color *LoadImageColors (Image image) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Color *LoadImagePalette (Image image, int maxPaletteSize, int *colorCount) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadImageColors (Color *colors) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadImagePalette (Color *colors) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Rectangle GetImageAlphaBorder (Image image, float threshold) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Color GetImageColor (Image image, int x, int y) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageClearBackground (Image *dst, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageDrawPixel (Image *dst, int posX, int posY, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageDrawPixelV (Image *dst, Vector2 position, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageDrawLine (Image *dst, int startPosX, int startPosY, int endPosX, int endPosY, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageDrawLineV (Image *dst, Vector2 start, Vector2 end, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageDrawCircle (Image *dst, int centerX, int centerY, int radius, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageDrawCircleV (Image *dst, Vector2 center, int radius, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageDrawCircleLines (Image *dst, int centerX, int centerY, int radius, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageDrawCircleLinesV (Image *dst, Vector2 center, int radius, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageDrawRectangle (Image *dst, int posX, int posY, int width, int height, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageDrawRectangleV (Image *dst, Vector2 position, Vector2 size, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageDrawRectangleRec (Image *dst, Rectangle rec, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageDrawRectangleLines (Image *dst, Rectangle rec, int thick, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageDraw (Image *dst, Image src, Rectangle srcRec, Rectangle dstRec, Color tint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageDrawText (Image *dst, const char *text, int posX, int posY, int fontSize, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ImageDrawTextEx (Image *dst, Font font, const char *text, Vector2 position, float fontSize, float spacing, Color tint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Texture2D LoadTexture (const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Texture2D LoadTextureFromImage (Image image) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function TextureCubemap LoadTextureCubemap (Image image, int layout) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function RenderTexture2D LoadRenderTexture (int width, int height) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsTextureReady (Texture2D texture) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadTexture (Texture2D texture) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsRenderTextureReady (RenderTexture2D target) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadRenderTexture (RenderTexture2D target) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UpdateTexture (Texture2D texture, const void *pixels) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UpdateTextureRec (Texture2D texture, Rectangle rec, const void *pixels) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure GenTextureMipmaps (Texture2D *texture) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetTextureFilter (Texture2D texture, int filter) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetTextureWrap (Texture2D texture, int wrap) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawTexture (Texture2D texture, int posX, int posY, Color tint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawTextureV (Texture2D texture, Vector2 position, Color tint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawTextureEx (Texture2D texture, Vector2 position, float rotation, float scale, Color tint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawTextureRec (Texture2D texture, Rectangle source, Vector2 position, Color tint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawTexturePro (Texture2D texture, Rectangle source, Rectangle dest, Vector2 origin, float rotation, Color tint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawTextureNPatch (Texture2D texture, NPatchInfo nPatchInfo, Rectangle dest, Vector2 origin, float rotation, Color tint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Color Fade (Color color, float alpha) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int ColorToInt (Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Vector4 ColorNormalize (Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Color ColorFromNormalized (Vector4 normalized) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Vector3 ColorToHSV (Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Color ColorFromHSV (float hue, float saturation, float value) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Color ColorTint (Color color, Color tint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Color ColorBrightness (Color color, float factor) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Color ColorContrast (Color color, float contrast) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Color ColorAlpha (Color color, float alpha) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Color ColorAlphaBlend (Color dst, Color src, Color tint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Color GetColor (unsigned int hexValue) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Color GetPixelColor (void *srcPtr, int format) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetPixelColor (void *dstPtr, Color color, int format) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int GetPixelDataSize (int width, int height, int format) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Font GetFontDefault (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Font LoadFont (const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Font LoadFontEx (const char *fileName, int fontSize, int *codepoints, int codepointCount) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Font LoadFontFromImage (Image image, Color key, int firstChar) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Font LoadFontFromMemory (const char *fileType, const unsigned char *fileData, int dataSize, int fontSize, int *codepoints, int codepointCount) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsFontReady (Font font) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function GlyphInfo *LoadFontData (const unsigned char *fileData, int dataSize, int fontSize, int *codepoints, int codepointCount, int type) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Image GenImageFontAtlas (const GlyphInfo *glyphs, Rectangle **glyphRecs, int glyphCount, int fontSize, int padding, int packMethod) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadFontData (GlyphInfo *glyphs, int glyphCount) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadFont (Font font) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool ExportFontAsCode (Font font, const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawFPS (int posX, int posY) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawText (const char *text, int posX, int posY, int fontSize, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawTextEx (Font font, const char *text, Vector2 position, float fontSize, float spacing, Color tint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawTextPro (Font font, const char *text, Vector2 position, Vector2 origin, float rotation, float fontSize, float spacing, Color tint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawTextCodepoint (Font font, int codepoint, Vector2 position, float fontSize, Color tint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawTextCodepoints (Font font, const int *codepoints, int codepointCount, Vector2 position, float fontSize, float spacing, Color tint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetTextLineSpacing (int spacing) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int MeasureText (const char *text, int fontSize) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Vector2 MeasureTextEx (Font font, const char *text, float fontSize, float spacing) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int GetGlyphIndex (Font font, int codepoint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function GlyphInfo GetGlyphInfo (Font font, int codepoint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Rectangle GetGlyphAtlasRec (Font font, int codepoint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function char *LoadUTF8 (const int *codepoints, int length) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadUTF8 (char *text) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int *LoadCodepoints (const char *text, int *count) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadCodepoints (int *codepoints) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int GetCodepointCount (const char *text) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int GetCodepoint (const char *text, int *codepointSize) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int GetCodepointNext (const char *text, int *codepointSize) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int GetCodepointPrevious (const char *text, int *codepointSize) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function const char *CodepointToUTF8 (int codepoint, int *utf8Size) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int TextCopy (char *dst, const char *src) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool TextIsEqual (const char *text1, const char *text2) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function unsigned int TextLength (const char *text) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function const char *TextFormat (const char *text, ...) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function const char *TextSubtext (const char *text, int position, int length) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function char *TextReplace (char *text, const char *replace, const char *by) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function char *TextInsert (const char *text, const char *insert, int position) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function const char *TextJoin (const char **textList, int count, const char *delimiter) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function const char **TextSplit (const char *text, char delimiter, int *count) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure TextAppend (char *text, const char *append, int *position) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int TextFindIndex (const char *text, const char *find) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function const char *TextToUpper (const char *text) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function const char *TextToLower (const char *text) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function const char *TextToPascal (const char *text) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function int TextToInteger (const char *text) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawLine3D (Vector3 startPos, Vector3 endPos, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawPoint3D (Vector3 position, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawCircle3D (Vector3 center, float radius, Vector3 rotationAxis, float rotationAngle, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawTriangle3D (Vector3 v1, Vector3 v2, Vector3 v3, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawTriangleStrip3D (Vector3 *points, int pointCount, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawCube (Vector3 position, float width, float height, float length, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawCubeV (Vector3 position, Vector3 size, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawCubeWires (Vector3 position, float width, float height, float length, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawCubeWiresV (Vector3 position, Vector3 size, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawSphere (Vector3 centerPos, float radius, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawSphereEx (Vector3 centerPos, float radius, int rings, int slices, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawSphereWires (Vector3 centerPos, float radius, int rings, int slices, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawCylinder (Vector3 position, float radiusTop, float radiusBottom, float height, int slices, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawCylinderEx (Vector3 startPos, Vector3 endPos, float startRadius, float endRadius, int sides, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawCylinderWires (Vector3 position, float radiusTop, float radiusBottom, float height, int slices, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawCylinderWiresEx (Vector3 startPos, Vector3 endPos, float startRadius, float endRadius, int sides, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawCapsule (Vector3 startPos, Vector3 endPos, float radius, int slices, int rings, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawCapsuleWires (Vector3 startPos, Vector3 endPos, float radius, int slices, int rings, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawPlane (Vector3 centerPos, Vector2 size, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawRay (Ray ray, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawGrid (int slices, float spacing) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Model LoadModel (const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Model LoadModelFromMesh (Mesh mesh) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsModelReady (Model model) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadModel (Model model) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function BoundingBox GetModelBoundingBox (Model model) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawModel (Model model, Vector3 position, float scale, Color tint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawModelEx (Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawModelWires (Model model, Vector3 position, float scale, Color tint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawModelWiresEx (Model model, Vector3 position, Vector3 rotationAxis, float rotationAngle, Vector3 scale, Color tint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawBoundingBox (BoundingBox box, Color color) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawBillboard (Camera camera, Texture2D texture, Vector3 position, float size, Color tint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawBillboardRec (Camera camera, Texture2D texture, Rectangle source, Vector3 position, Vector2 size, Color tint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawBillboardPro (Camera camera, Texture2D texture, Rectangle source, Vector3 position, Vector3 up, Vector2 size, Vector2 origin, float rotation, Color tint) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UploadMesh (Mesh *mesh, bool dynamic) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UpdateMeshBuffer (Mesh mesh, int index, const void *data, int dataSize, int offset) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadMesh (Mesh mesh) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawMesh (Mesh mesh, Material material, Matrix transform) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure DrawMeshInstanced (Mesh mesh, Material material, const Matrix *transforms, int instances) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function BoundingBox GetMeshBoundingBox (Mesh mesh) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure GenMeshTangents (Mesh *mesh) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool ExportMesh (Mesh mesh, const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool ExportMeshAsCode (Mesh mesh, const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Mesh GenMeshPoly (int sides, float radius) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Mesh GenMeshPlane (float width, float length, int resX, int resZ) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Mesh GenMeshCube (float width, float height, float length) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Mesh GenMeshSphere (float radius, int rings, int slices) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Mesh GenMeshHemiSphere (float radius, int rings, int slices) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Mesh GenMeshCylinder (float radius, float height, int slices) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Mesh GenMeshCone (float radius, float height, int slices) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Mesh GenMeshTorus (float radius, float size, int radSeg, int sides) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Mesh GenMeshKnot (float radius, float size, int radSeg, int sides) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Mesh GenMeshHeightmap (Image heightmap, Vector3 size) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Mesh GenMeshCubicmap (Image cubicmap, Vector3 cubeSize) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Material *LoadMaterials (const char *fileName, int *materialCount) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Material LoadMaterialDefault (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsMaterialReady (Material material) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadMaterial (Material material) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetMaterialTexture (Material *material, int mapType, Texture2D texture) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetModelMeshMaterial (Model *model, int meshId, int materialId) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function ModelAnimation *LoadModelAnimations (const char *fileName, int *animCount) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UpdateModelAnimation (Model model, ModelAnimation anim, int frame) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadModelAnimation (ModelAnimation anim) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadModelAnimations (ModelAnimation *animations, int animCount) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsModelAnimationValid (Model model, ModelAnimation anim) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool CheckCollisionSpheres (Vector3 center1, float radius1, Vector3 center2, float radius2) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool CheckCollisionBoxes (BoundingBox box1, BoundingBox box2) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool CheckCollisionBoxSphere (BoundingBox box, Vector3 center, float radius) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function RayCollision GetRayCollisionSphere (Ray ray, Vector3 center, float radius) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function RayCollision GetRayCollisionBox (Ray ray, BoundingBox box) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function RayCollision GetRayCollisionMesh (Ray ray, Mesh mesh, Matrix transform) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function RayCollision GetRayCollisionTriangle (Ray ray, Vector3 p1, Vector3 p2, Vector3 p3) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function RayCollision GetRayCollisionQuad (Ray ray, Vector3 p1, Vector3 p2, Vector3 p3, Vector3 p4) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~typedef void  (*AudioCallback) (void *bufferData, unsigned int frames) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure InitAudioDevice (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure CloseAudioDevice (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsAudioDeviceReady (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetMasterVolume (float volume) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function float GetMasterVolume (void) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Wave LoadWave (const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Wave LoadWaveFromMemory (const char *fileType, const unsigned char *fileData, int dataSize) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsWaveReady (Wave wave) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Sound LoadSound (const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Sound LoadSoundFromWave (Wave wave) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Sound LoadSoundAlias (Sound source) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsSoundReady (Sound sound) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UpdateSound (Sound sound, const void *data, int sampleCount) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadWave (Wave wave) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadSound (Sound sound) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadSoundAlias (Sound alias) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool ExportWave (Wave wave, const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool ExportWaveAsCode (Wave wave, const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure PlaySound (Sound sound) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure StopSound (Sound sound) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure PauseSound (Sound sound) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ResumeSound (Sound sound) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsSoundPlaying (Sound sound) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetSoundVolume (Sound sound, float volume) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetSoundPitch (Sound sound, float pitch) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetSoundPan (Sound sound, float pan) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Wave WaveCopy (Wave wave) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure WaveCrop (Wave *wave, int initSample, int finalSample) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure WaveFormat (Wave *wave, int sampleRate, int sampleSize, int channels) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function float *LoadWaveSamples (Wave wave) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadWaveSamples (float *samples) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Music LoadMusicStream (const char *fileName) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function Music LoadMusicStreamFromMemory (const char *fileType, const unsigned char *data, int dataSize) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsMusicReady (Music music) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadMusicStream (Music music) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure PlayMusicStream (Music music) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsMusicStreamPlaying (Music music) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UpdateMusicStream (Music music) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure StopMusicStream (Music music) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure PauseMusicStream (Music music) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ResumeMusicStream (Music music) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SeekMusicStream (Music music, float position) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetMusicVolume (Music music, float volume) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetMusicPitch (Music music, float pitch) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetMusicPan (Music music, float pan) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function float GetMusicTimeLength (Music music) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function float GetMusicTimePlayed (Music music) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function AudioStream LoadAudioStream (unsigned int sampleRate, unsigned int sampleSize, unsigned int channels) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsAudioStreamReady (AudioStream stream) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UnloadAudioStream (AudioStream stream) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure UpdateAudioStream (AudioStream stream, const void *data, int frameCount) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsAudioStreamProcessed (AudioStream stream) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure PlayAudioStream (AudioStream stream) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure PauseAudioStream (AudioStream stream) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure ResumeAudioStream (AudioStream stream) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~function bool IsAudioStreamPlaying (AudioStream stream) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure StopAudioStream (AudioStream stream) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetAudioStreamVolume (AudioStream stream, float volume) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetAudioStreamPitch (AudioStream stream, float pitch) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetAudioStreamPan (AudioStream stream, float pan) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetAudioStreamBufferSizeDefault (int size) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       --~procedure SetAudioStreamCallback (AudioStream stream, AudioCallback callback) with
+               --~Import        => True,
+               --~Convention    => C,
+               --~External_Name => "";
+
+       procedure Attach_Audio_Stream_Processor (
+               Stream    : Audio_Stream := No_Audio_Stream;
+               Processor : Pointer      := null
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "AttachAudioStreamProcessor";
+
+       procedure Detach_Audio_Stream_Processor (
+               Stream    : Audio_Stream := No_Audio_Stream;
+               Processor : Pointer      := null
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "DetachAudioStreamProcessor";
+
+       procedure Attach_Audio_Mixed_Processor (
+               Processor : Pointer := null
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "AttachAudioMixedProcessor";
+
+       procedure Detach_Audio_Mixed_Processor (
+               Processor : Pointer := null
+       ) with
+               Import        => True,
+               Convention    => C,
+               External_Name => "DetachAudioMixedProcessor";
+
+end Raylib;
diff --git a/window.adb b/window.adb
new file mode 100644 (file)
index 0000000..f50781c
--- /dev/null
@@ -0,0 +1,22 @@
+with Raylib;
+use  Raylib;
+
+procedure Window is
+
+begin
+
+       Open_Window (720, 360, "Heyo Raylib!" & Character'Val (0));
+
+       Main_Loop: loop
+               exit when Window_Should_Close;
+               --
+               Begin_Drawing;
+               --
+               Clear_Background (Blue);
+               --
+               End_Drawing;
+       end loop Main_Loop;
+
+       Close_Window;
+
+end Window;