Pārlūkot izejas kodu

Improved raylib parser to export data as XML

 - Improved command-line
 - Added XML support
 - Added sample outputs: DEFAULT, JSON, XML
 - Reviewed LoadFileText() bug
 - Removed trailing spaces
Ray 4 gadi atpakaļ
vecāks
revīzija
d875891a3c
4 mainītis faili ar 13185 papildinājumiem un 258 dzēšanām
  1. 6668 0
      parser/raylib_api.json
  2. 3568 0
      parser/raylib_api.txt
  3. 2509 0
      parser/raylib_api.xml
  4. 440 258
      parser/raylib_parser.c

+ 6668 - 0
parser/raylib_api.json

@@ -0,0 +1,6668 @@
+{
+  "structs": [
+    {
+      "name": "Vector2",
+      "description": "",
+      "fields": [
+        {
+          "name": "x",
+          "type": "float",
+          "description": "Vector x component"
+        },
+        {
+          "name": "y",
+          "type": "float",
+          "description": "Vector y component"
+        }
+      ]
+    },
+    {
+      "name": "Vector3",
+      "description": "",
+      "fields": [
+        {
+          "name": "x",
+          "type": "float",
+          "description": "Vector x component"
+        },
+        {
+          "name": "y",
+          "type": "float",
+          "description": "Vector y component"
+        },
+        {
+          "name": "z",
+          "type": "float",
+          "description": "Vector z component"
+        }
+      ]
+    },
+    {
+      "name": "Vector4",
+      "description": "",
+      "fields": [
+        {
+          "name": "x",
+          "type": "float",
+          "description": "Vector x component"
+        },
+        {
+          "name": "y",
+          "type": "float",
+          "description": "Vector y component"
+        },
+        {
+          "name": "z",
+          "type": "float",
+          "description": "Vector z component"
+        },
+        {
+          "name": "w",
+          "type": "float",
+          "description": "Vector w component"
+        }
+      ]
+    },
+    {
+      "name": "Matrix",
+      "description": "",
+      "fields": [
+        {
+          "name": "m0, m4, m8, m12",
+          "type": "float",
+          "description": "Matrix first row (4 components)"
+        },
+        {
+          "name": "m1, m5, m9, m13",
+          "type": "float",
+          "description": "Matrix second row (4 components)"
+        },
+        {
+          "name": "m2, m6, m10, m14",
+          "type": "float",
+          "description": "Matrix third row (4 components)"
+        },
+        {
+          "name": "m3, m7, m11, m15",
+          "type": "float",
+          "description": "Matrix fourth row (4 components)"
+        }
+      ]
+    },
+    {
+      "name": "Color",
+      "description": "",
+      "fields": [
+        {
+          "name": "r",
+          "type": "unsigned char",
+          "description": "Color red value"
+        },
+        {
+          "name": "g",
+          "type": "unsigned char",
+          "description": "Color green value"
+        },
+        {
+          "name": "b",
+          "type": "unsigned char",
+          "description": "Color blue value"
+        },
+        {
+          "name": "a",
+          "type": "unsigned char",
+          "description": "Color alpha value"
+        }
+      ]
+    },
+    {
+      "name": "Rectangle",
+      "description": "",
+      "fields": [
+        {
+          "name": "x",
+          "type": "float",
+          "description": "Rectangle top-left corner position x "
+        },
+        {
+          "name": "y",
+          "type": "float",
+          "description": "Rectangle top-left corner position y"
+        },
+        {
+          "name": "width",
+          "type": "float",
+          "description": "Rectangle width"
+        },
+        {
+          "name": "height",
+          "type": "float",
+          "description": "Rectangle height"
+        }
+      ]
+    },
+    {
+      "name": "Image",
+      "description": "",
+      "fields": [
+        {
+          "name": "data",
+          "type": "void *",
+          "description": "Image raw data"
+        },
+        {
+          "name": "width",
+          "type": "int",
+          "description": "Image base width"
+        },
+        {
+          "name": "height",
+          "type": "int",
+          "description": "Image base height"
+        },
+        {
+          "name": "mipmaps",
+          "type": "int",
+          "description": "Mipmap levels, 1 by default"
+        },
+        {
+          "name": "format",
+          "type": "int",
+          "description": "Data format (PixelFormat type)"
+        }
+      ]
+    },
+    {
+      "name": "Texture",
+      "description": "",
+      "fields": [
+        {
+          "name": "id",
+          "type": "unsigned int",
+          "description": "OpenGL texture id"
+        },
+        {
+          "name": "width",
+          "type": "int",
+          "description": "Texture base width"
+        },
+        {
+          "name": "height",
+          "type": "int",
+          "description": "Texture base height"
+        },
+        {
+          "name": "mipmaps",
+          "type": "int",
+          "description": "Mipmap levels, 1 by default"
+        },
+        {
+          "name": "format",
+          "type": "int",
+          "description": "Data format (PixelFormat type)"
+        }
+      ]
+    },
+    {
+      "name": "RenderTexture",
+      "description": "",
+      "fields": [
+        {
+          "name": "id",
+          "type": "unsigned int",
+          "description": "OpenGL framebuffer object id"
+        },
+        {
+          "name": "texture",
+          "type": "Texture",
+          "description": "Color buffer attachment texture"
+        },
+        {
+          "name": "depth",
+          "type": "Texture",
+          "description": "Depth buffer attachment texture"
+        }
+      ]
+    },
+    {
+      "name": "NPatchInfo",
+      "description": "",
+      "fields": [
+        {
+          "name": "source",
+          "type": "Rectangle",
+          "description": "Texture source rectangle"
+        },
+        {
+          "name": "left",
+          "type": "int",
+          "description": "Left border offset"
+        },
+        {
+          "name": "top",
+          "type": "int",
+          "description": "Top border offset"
+        },
+        {
+          "name": "right",
+          "type": "int",
+          "description": "Right border offset"
+        },
+        {
+          "name": "bottom",
+          "type": "int",
+          "description": "Bottom border offset"
+        },
+        {
+          "name": "layout",
+          "type": "int",
+          "description": "Layout of the n-patch: 3x3, 1x3 or 3x1"
+        }
+      ]
+    },
+    {
+      "name": "CharInfo",
+      "description": "",
+      "fields": [
+        {
+          "name": "value",
+          "type": "int",
+          "description": "Character value (Unicode)"
+        },
+        {
+          "name": "offsetX",
+          "type": "int",
+          "description": "Character offset X when drawing"
+        },
+        {
+          "name": "offsetY",
+          "type": "int",
+          "description": "Character offset Y when drawing"
+        },
+        {
+          "name": "advanceX",
+          "type": "int",
+          "description": "Character advance position X"
+        },
+        {
+          "name": "image",
+          "type": "Image",
+          "description": "Character image data"
+        }
+      ]
+    },
+    {
+      "name": "Font",
+      "description": "",
+      "fields": [
+        {
+          "name": "baseSize",
+          "type": "int",
+          "description": "Base size (default chars height)"
+        },
+        {
+          "name": "charsCount",
+          "type": "int",
+          "description": "Number of characters"
+        },
+        {
+          "name": "charsPadding",
+          "type": "int",
+          "description": "Padding around the chars"
+        },
+        {
+          "name": "texture",
+          "type": "Texture2D",
+          "description": "Characters texture atlas"
+        },
+        {
+          "name": "recs",
+          "type": "Rectangle *",
+          "description": "Characters rectangles in texture"
+        },
+        {
+          "name": "chars",
+          "type": "CharInfo *",
+          "description": "Characters info data"
+        }
+      ]
+    },
+    {
+      "name": "Camera3D",
+      "description": "",
+      "fields": [
+        {
+          "name": "position",
+          "type": "Vector3",
+          "description": "Camera position"
+        },
+        {
+          "name": "target",
+          "type": "Vector3",
+          "description": "Camera target it looks-at"
+        },
+        {
+          "name": "up",
+          "type": "Vector3",
+          "description": "Camera up vector (rotation over its axis)"
+        },
+        {
+          "name": "fovy",
+          "type": "float",
+          "description": "Camera field-of-view apperture in Y (degrees) in perspective, used as near plane width in orthographic"
+        },
+        {
+          "name": "projection",
+          "type": "int",
+          "description": "Camera projection: CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC"
+        }
+      ]
+    },
+    {
+      "name": "Camera2D",
+      "description": "",
+      "fields": [
+        {
+          "name": "offset",
+          "type": "Vector2",
+          "description": "Camera offset (displacement from target)"
+        },
+        {
+          "name": "target",
+          "type": "Vector2",
+          "description": "Camera target (rotation and zoom origin)"
+        },
+        {
+          "name": "rotation",
+          "type": "float",
+          "description": "Camera rotation in degrees"
+        },
+        {
+          "name": "zoom",
+          "type": "float",
+          "description": "Camera zoom (scaling), should be 1.0f by default"
+        }
+      ]
+    },
+    {
+      "name": "Mesh",
+      "description": "",
+      "fields": [
+        {
+          "name": "vertexCount",
+          "type": "int",
+          "description": "Number of vertices stored in arrays"
+        },
+        {
+          "name": "triangleCount",
+          "type": "int",
+          "description": "Number of triangles stored (indexed or not)"
+        },
+        {
+          "name": "vertices",
+          "type": "float *",
+          "description": "Vertex position (XYZ - 3 components per vertex) (shader-location = 0)"
+        },
+        {
+          "name": "texcoords",
+          "type": "float *",
+          "description": "Vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1)"
+        },
+        {
+          "name": "texcoords2",
+          "type": "float *",
+          "description": "Vertex second texture coordinates (useful for lightmaps) (shader-location = 5)"
+        },
+        {
+          "name": "normals",
+          "type": "float *",
+          "description": "Vertex normals (XYZ - 3 components per vertex) (shader-location = 2)"
+        },
+        {
+          "name": "tangents",
+          "type": "float *",
+          "description": "Vertex tangents (XYZW - 4 components per vertex) (shader-location = 4)"
+        },
+        {
+          "name": "colors",
+          "type": "unsigned char *",
+          "description": "Vertex colors (RGBA - 4 components per vertex) (shader-location = 3)"
+        },
+        {
+          "name": "indices",
+          "type": "unsigned short *",
+          "description": "Vertex indices (in case vertex data comes indexed)"
+        },
+        {
+          "name": "animVertices",
+          "type": "float *",
+          "description": "Animated vertex positions (after bones transformations)"
+        },
+        {
+          "name": "animNormals",
+          "type": "float *",
+          "description": "Animated normals (after bones transformations)"
+        },
+        {
+          "name": "boneIds",
+          "type": "int *",
+          "description": "Vertex bone ids, up to 4 bones influence by vertex (skinning)"
+        },
+        {
+          "name": "boneWeights",
+          "type": "float *",
+          "description": "Vertex bone weight, up to 4 bones influence by vertex (skinning)"
+        },
+        {
+          "name": "vaoId",
+          "type": "unsigned int",
+          "description": "OpenGL Vertex Array Object id"
+        },
+        {
+          "name": "vboId",
+          "type": "unsigned int *",
+          "description": "OpenGL Vertex Buffer Objects id (default vertex data)"
+        }
+      ]
+    },
+    {
+      "name": "Shader",
+      "description": "",
+      "fields": [
+        {
+          "name": "id",
+          "type": "unsigned int",
+          "description": "Shader program id"
+        },
+        {
+          "name": "locs",
+          "type": "int *",
+          "description": "Shader locations array (MAX_SHADER_LOCATIONS)"
+        }
+      ]
+    },
+    {
+      "name": "MaterialMap",
+      "description": "",
+      "fields": [
+        {
+          "name": "texture",
+          "type": "Texture2D",
+          "description": "Material map texture"
+        },
+        {
+          "name": "color",
+          "type": "Color",
+          "description": "Material map color"
+        },
+        {
+          "name": "value",
+          "type": "float",
+          "description": "Material map value"
+        }
+      ]
+    },
+    {
+      "name": "Material",
+      "description": "",
+      "fields": [
+        {
+          "name": "shader",
+          "type": "Shader",
+          "description": "Material shader"
+        },
+        {
+          "name": "maps",
+          "type": "MaterialMap *",
+          "description": "Material maps array (MAX_MATERIAL_MAPS)"
+        },
+        {
+          "name": "params[4]",
+          "type": "float",
+          "description": "Material generic parameters (if required)"
+        }
+      ]
+    },
+    {
+      "name": "Transform",
+      "description": "",
+      "fields": [
+        {
+          "name": "translation",
+          "type": "Vector3",
+          "description": "Translation"
+        },
+        {
+          "name": "rotation",
+          "type": "Quaternion",
+          "description": "Rotation"
+        },
+        {
+          "name": "scale",
+          "type": "Vector3",
+          "description": "Scale"
+        }
+      ]
+    },
+    {
+      "name": "BoneInfo",
+      "description": "",
+      "fields": [
+        {
+          "name": "name[32]",
+          "type": "char",
+          "description": "Bone name"
+        },
+        {
+          "name": "parent",
+          "type": "int",
+          "description": "Bone parent"
+        }
+      ]
+    },
+    {
+      "name": "Model",
+      "description": "",
+      "fields": [
+        {
+          "name": "transform",
+          "type": "Matrix",
+          "description": "Local transform matrix"
+        },
+        {
+          "name": "meshCount",
+          "type": "int",
+          "description": "Number of meshes"
+        },
+        {
+          "name": "materialCount",
+          "type": "int",
+          "description": "Number of materials"
+        },
+        {
+          "name": "meshes",
+          "type": "Mesh *",
+          "description": "Meshes array"
+        },
+        {
+          "name": "materials",
+          "type": "Material *",
+          "description": "Materials array"
+        },
+        {
+          "name": "meshMaterial",
+          "type": "int *",
+          "description": "Mesh material number"
+        },
+        {
+          "name": "boneCount",
+          "type": "int",
+          "description": "Number of bones"
+        },
+        {
+          "name": "bones",
+          "type": "BoneInfo *",
+          "description": "Bones information (skeleton)"
+        },
+        {
+          "name": "bindPose",
+          "type": "Transform *",
+          "description": "Bones base transformation (pose)"
+        }
+      ]
+    },
+    {
+      "name": "ModelAnimation",
+      "description": "",
+      "fields": [
+        {
+          "name": "boneCount",
+          "type": "int",
+          "description": "Number of bones"
+        },
+        {
+          "name": "frameCount",
+          "type": "int",
+          "description": "Number of animation frames"
+        },
+        {
+          "name": "bones",
+          "type": "BoneInfo *",
+          "description": "Bones information (skeleton)"
+        },
+        {
+          "name": "framePoses",
+          "type": "Transform **",
+          "description": "Poses array by frame"
+        }
+      ]
+    },
+    {
+      "name": "Ray",
+      "description": "",
+      "fields": [
+        {
+          "name": "position",
+          "type": "Vector3",
+          "description": "Ray position (origin)"
+        },
+        {
+          "name": "direction",
+          "type": "Vector3",
+          "description": "Ray direction"
+        }
+      ]
+    },
+    {
+      "name": "RayCollision",
+      "description": "",
+      "fields": [
+        {
+          "name": "hit",
+          "type": "bool",
+          "description": "Did the ray hit something?"
+        },
+        {
+          "name": "distance",
+          "type": "float",
+          "description": "Distance to nearest hit"
+        },
+        {
+          "name": "point",
+          "type": "Vector3",
+          "description": "Point of nearest hit"
+        },
+        {
+          "name": "normal",
+          "type": "Vector3",
+          "description": "Surface normal of hit"
+        }
+      ]
+    },
+    {
+      "name": "BoundingBox",
+      "description": "",
+      "fields": [
+        {
+          "name": "min",
+          "type": "Vector3",
+          "description": "Minimum vertex box-corner"
+        },
+        {
+          "name": "max",
+          "type": "Vector3",
+          "description": "Maximum vertex box-corner"
+        }
+      ]
+    },
+    {
+      "name": "Wave",
+      "description": "",
+      "fields": [
+        {
+          "name": "sampleCount",
+          "type": "unsigned int",
+          "description": "Total number of samples (considering channels!)"
+        },
+        {
+          "name": "sampleRate",
+          "type": "unsigned int",
+          "description": "Frequency (samples per second)"
+        },
+        {
+          "name": "sampleSize",
+          "type": "unsigned int",
+          "description": "Bit depth (bits per sample): 8, 16, 32 (24 not supported)"
+        },
+        {
+          "name": "channels",
+          "type": "unsigned int",
+          "description": "Number of channels (1-mono, 2-stereo)"
+        },
+        {
+          "name": "data",
+          "type": "void *",
+          "description": "Buffer data pointer"
+        }
+      ]
+    },
+    {
+      "name": "AudioStream",
+      "description": "",
+      "fields": [
+        {
+          "name": "buffer",
+          "type": "rAudioBuffer *",
+          "description": "Pointer to internal data used by the audio system"
+        },
+        {
+          "name": "sampleRate",
+          "type": "unsigned int",
+          "description": "Frequency (samples per second)"
+        },
+        {
+          "name": "sampleSize",
+          "type": "unsigned int",
+          "description": "Bit depth (bits per sample): 8, 16, 32 (24 not supported)"
+        },
+        {
+          "name": "channels",
+          "type": "unsigned int",
+          "description": "Number of channels (1-mono, 2-stereo)"
+        }
+      ]
+    },
+    {
+      "name": "Sound",
+      "description": "",
+      "fields": [
+        {
+          "name": "stream",
+          "type": "AudioStream",
+          "description": "Audio stream"
+        },
+        {
+          "name": "sampleCount",
+          "type": "unsigned int",
+          "description": "Total number of samples"
+        }
+      ]
+    },
+    {
+      "name": "Music",
+      "description": "",
+      "fields": [
+        {
+          "name": "stream",
+          "type": "AudioStream",
+          "description": "Audio stream"
+        },
+        {
+          "name": "sampleCount",
+          "type": "unsigned int",
+          "description": "Total number of samples"
+        },
+        {
+          "name": "looping",
+          "type": "bool",
+          "description": "Music looping enable"
+        },
+        {
+          "name": "ctxType",
+          "type": "int",
+          "description": "Type of music context (audio filetype)"
+        },
+        {
+          "name": "ctxData",
+          "type": "void *",
+          "description": "Audio context data, depends on type"
+        }
+      ]
+    },
+    {
+      "name": "VrDeviceInfo",
+      "description": "",
+      "fields": [
+        {
+          "name": "hResolution",
+          "type": "int",
+          "description": "Horizontal resolution in pixels"
+        },
+        {
+          "name": "vResolution",
+          "type": "int",
+          "description": "Vertical resolution in pixels"
+        },
+        {
+          "name": "hScreenSize",
+          "type": "float",
+          "description": "Horizontal size in meters"
+        },
+        {
+          "name": "vScreenSize",
+          "type": "float",
+          "description": "Vertical size in meters"
+        },
+        {
+          "name": "vScreenCenter",
+          "type": "float",
+          "description": "Screen center in meters"
+        },
+        {
+          "name": "eyeToScreenDistance",
+          "type": "float",
+          "description": "Distance between eye and display in meters"
+        },
+        {
+          "name": "lensSeparationDistance",
+          "type": "float",
+          "description": "Lens separation distance in meters"
+        },
+        {
+          "name": "interpupillaryDistance",
+          "type": "float",
+          "description": "IPD (distance between pupils) in meters"
+        },
+        {
+          "name": "lensDistortionValues[4]",
+          "type": "float",
+          "description": "Lens distortion constant parameters"
+        },
+        {
+          "name": "chromaAbCorrection[4]",
+          "type": "float",
+          "description": "Chromatic aberration correction parameters"
+        }
+      ]
+    },
+    {
+      "name": "VrStereoConfig",
+      "description": "",
+      "fields": [
+        {
+          "name": "projection[2]",
+          "type": "Matrix",
+          "description": "VR projection matrices (per eye)"
+        },
+        {
+          "name": "viewOffset[2]",
+          "type": "Matrix",
+          "description": "VR view offset matrices (per eye)"
+        },
+        {
+          "name": "leftLensCenter[2]",
+          "type": "float",
+          "description": "VR left lens center"
+        },
+        {
+          "name": "rightLensCenter[2]",
+          "type": "float",
+          "description": "VR right lens center"
+        },
+        {
+          "name": "leftScreenCenter[2]",
+          "type": "float",
+          "description": "VR left screen center"
+        },
+        {
+          "name": "rightScreenCenter[2]",
+          "type": "float",
+          "description": "VR right screen center"
+        },
+        {
+          "name": "scale[2]",
+          "type": "float",
+          "description": "VR distortion scale"
+        },
+        {
+          "name": "scaleIn[2]",
+          "type": "float",
+          "description": "VR distortion scale in"
+        }
+      ]
+    }
+  ],
+  "enums": [
+    {
+      "name": "ConfigFlags",
+      "description": "",
+      "values": [
+        {
+          "name": "FLAG_VSYNC_HINT",
+          "value": 64,
+          "description": ""
+        },
+        {
+          "name": "FLAG_FULLSCREEN_MODE",
+          "value": 2,
+          "description": ""
+        },
+        {
+          "name": "FLAG_WINDOW_RESIZABLE",
+          "value": 4,
+          "description": ""
+        },
+        {
+          "name": "FLAG_WINDOW_UNDECORATED",
+          "value": 8,
+          "description": ""
+        },
+        {
+          "name": "FLAG_WINDOW_HIDDEN",
+          "value": 128,
+          "description": ""
+        },
+        {
+          "name": "FLAG_WINDOW_MINIMIZED",
+          "value": 512,
+          "description": ""
+        },
+        {
+          "name": "FLAG_WINDOW_MAXIMIZED",
+          "value": 1024,
+          "description": ""
+        },
+        {
+          "name": "FLAG_WINDOW_UNFOCUSED",
+          "value": 2048,
+          "description": ""
+        },
+        {
+          "name": "FLAG_WINDOW_TOPMOST",
+          "value": 4096,
+          "description": ""
+        },
+        {
+          "name": "FLAG_WINDOW_ALWAYS_RUN",
+          "value": 256,
+          "description": ""
+        },
+        {
+          "name": "FLAG_WINDOW_TRANSPARENT",
+          "value": 16,
+          "description": ""
+        },
+        {
+          "name": "FLAG_WINDOW_HIGHDPI",
+          "value": 8192,
+          "description": ""
+        },
+        {
+          "name": "FLAG_MSAA_4X_HINT",
+          "value": 32,
+          "description": ""
+        },
+        {
+          "name": "FLAG_INTERLACED_HINT",
+          "value": 65536,
+          "description": ""
+        }
+      ]
+    },
+    {
+      "name": "TraceLogLevel",
+      "description": "",
+      "values": [
+        {
+          "name": "LOG_ALL",
+          "value": 0,
+          "description": ""
+        },
+        {
+          "name": "LOG_TRACE",
+          "value": 1,
+          "description": ""
+        },
+        {
+          "name": "LOG_DEBUG",
+          "value": 2,
+          "description": ""
+        },
+        {
+          "name": "LOG_INFO",
+          "value": 3,
+          "description": ""
+        },
+        {
+          "name": "LOG_WARNING",
+          "value": 4,
+          "description": ""
+        },
+        {
+          "name": "LOG_ERROR",
+          "value": 5,
+          "description": ""
+        },
+        {
+          "name": "LOG_FATAL",
+          "value": 6,
+          "description": ""
+        },
+        {
+          "name": "LOG_NONE",
+          "value": 7,
+          "description": ""
+        }
+      ]
+    },
+    {
+      "name": "KeyboardKey",
+      "description": "",
+      "values": [
+        {
+          "name": "KEY_NULL",
+          "value": 0,
+          "description": ""
+        },
+        {
+          "name": "KEY_APOSTROPHE",
+          "value": 39,
+          "description": ""
+        },
+        {
+          "name": "KEY_COMMA",
+          "value": 44,
+          "description": ""
+        },
+        {
+          "name": "KEY_MINUS",
+          "value": 45,
+          "description": ""
+        },
+        {
+          "name": "KEY_PERIOD",
+          "value": 46,
+          "description": ""
+        },
+        {
+          "name": "KEY_SLASH",
+          "value": 47,
+          "description": ""
+        },
+        {
+          "name": "KEY_ZERO",
+          "value": 48,
+          "description": ""
+        },
+        {
+          "name": "KEY_ONE",
+          "value": 49,
+          "description": ""
+        },
+        {
+          "name": "KEY_TWO",
+          "value": 50,
+          "description": ""
+        },
+        {
+          "name": "KEY_THREE",
+          "value": 51,
+          "description": ""
+        },
+        {
+          "name": "KEY_FOUR",
+          "value": 52,
+          "description": ""
+        },
+        {
+          "name": "KEY_FIVE",
+          "value": 53,
+          "description": ""
+        },
+        {
+          "name": "KEY_SIX",
+          "value": 54,
+          "description": ""
+        },
+        {
+          "name": "KEY_SEVEN",
+          "value": 55,
+          "description": ""
+        },
+        {
+          "name": "KEY_EIGHT",
+          "value": 56,
+          "description": ""
+        },
+        {
+          "name": "KEY_NINE",
+          "value": 57,
+          "description": ""
+        },
+        {
+          "name": "KEY_SEMICOLON",
+          "value": 59,
+          "description": ""
+        },
+        {
+          "name": "KEY_EQUAL",
+          "value": 61,
+          "description": ""
+        },
+        {
+          "name": "KEY_A",
+          "value": 65,
+          "description": ""
+        },
+        {
+          "name": "KEY_B",
+          "value": 66,
+          "description": ""
+        },
+        {
+          "name": "KEY_C",
+          "value": 67,
+          "description": ""
+        },
+        {
+          "name": "KEY_D",
+          "value": 68,
+          "description": ""
+        },
+        {
+          "name": "KEY_E",
+          "value": 69,
+          "description": ""
+        },
+        {
+          "name": "KEY_F",
+          "value": 70,
+          "description": ""
+        },
+        {
+          "name": "KEY_G",
+          "value": 71,
+          "description": ""
+        },
+        {
+          "name": "KEY_H",
+          "value": 72,
+          "description": ""
+        },
+        {
+          "name": "KEY_I",
+          "value": 73,
+          "description": ""
+        },
+        {
+          "name": "KEY_J",
+          "value": 74,
+          "description": ""
+        },
+        {
+          "name": "KEY_K",
+          "value": 75,
+          "description": ""
+        },
+        {
+          "name": "KEY_L",
+          "value": 76,
+          "description": ""
+        },
+        {
+          "name": "KEY_M",
+          "value": 77,
+          "description": ""
+        },
+        {
+          "name": "KEY_N",
+          "value": 78,
+          "description": ""
+        },
+        {
+          "name": "KEY_O",
+          "value": 79,
+          "description": ""
+        },
+        {
+          "name": "KEY_P",
+          "value": 80,
+          "description": ""
+        },
+        {
+          "name": "KEY_Q",
+          "value": 81,
+          "description": ""
+        },
+        {
+          "name": "KEY_R",
+          "value": 82,
+          "description": ""
+        },
+        {
+          "name": "KEY_S",
+          "value": 83,
+          "description": ""
+        },
+        {
+          "name": "KEY_T",
+          "value": 84,
+          "description": ""
+        },
+        {
+          "name": "KEY_U",
+          "value": 85,
+          "description": ""
+        },
+        {
+          "name": "KEY_V",
+          "value": 86,
+          "description": ""
+        },
+        {
+          "name": "KEY_W",
+          "value": 87,
+          "description": ""
+        },
+        {
+          "name": "KEY_X",
+          "value": 88,
+          "description": ""
+        },
+        {
+          "name": "KEY_Y",
+          "value": 89,
+          "description": ""
+        },
+        {
+          "name": "KEY_Z",
+          "value": 90,
+          "description": ""
+        },
+        {
+          "name": "KEY_SPACE",
+          "value": 32,
+          "description": ""
+        },
+        {
+          "name": "KEY_ESCAPE",
+          "value": 256,
+          "description": ""
+        },
+        {
+          "name": "KEY_ENTER",
+          "value": 257,
+          "description": ""
+        },
+        {
+          "name": "KEY_TAB",
+          "value": 258,
+          "description": ""
+        },
+        {
+          "name": "KEY_BACKSPACE",
+          "value": 259,
+          "description": ""
+        },
+        {
+          "name": "KEY_INSERT",
+          "value": 260,
+          "description": ""
+        },
+        {
+          "name": "KEY_DELETE",
+          "value": 261,
+          "description": ""
+        },
+        {
+          "name": "KEY_RIGHT",
+          "value": 262,
+          "description": ""
+        },
+        {
+          "name": "KEY_LEFT",
+          "value": 263,
+          "description": ""
+        },
+        {
+          "name": "KEY_DOWN",
+          "value": 264,
+          "description": ""
+        },
+        {
+          "name": "KEY_UP",
+          "value": 265,
+          "description": ""
+        },
+        {
+          "name": "KEY_PAGE_UP",
+          "value": 266,
+          "description": ""
+        },
+        {
+          "name": "KEY_PAGE_DOWN",
+          "value": 267,
+          "description": ""
+        },
+        {
+          "name": "KEY_HOME",
+          "value": 268,
+          "description": ""
+        },
+        {
+          "name": "KEY_END",
+          "value": 269,
+          "description": ""
+        },
+        {
+          "name": "KEY_CAPS_LOCK",
+          "value": 280,
+          "description": ""
+        },
+        {
+          "name": "KEY_SCROLL_LOCK",
+          "value": 281,
+          "description": ""
+        },
+        {
+          "name": "KEY_NUM_LOCK",
+          "value": 282,
+          "description": ""
+        },
+        {
+          "name": "KEY_PRINT_SCREEN",
+          "value": 283,
+          "description": ""
+        },
+        {
+          "name": "KEY_PAUSE",
+          "value": 284,
+          "description": ""
+        },
+        {
+          "name": "KEY_F1",
+          "value": 290,
+          "description": ""
+        },
+        {
+          "name": "KEY_F2",
+          "value": 291,
+          "description": ""
+        },
+        {
+          "name": "KEY_F3",
+          "value": 292,
+          "description": ""
+        },
+        {
+          "name": "KEY_F4",
+          "value": 293,
+          "description": ""
+        },
+        {
+          "name": "KEY_F5",
+          "value": 294,
+          "description": ""
+        },
+        {
+          "name": "KEY_F6",
+          "value": 295,
+          "description": ""
+        },
+        {
+          "name": "KEY_F7",
+          "value": 296,
+          "description": ""
+        },
+        {
+          "name": "KEY_F8",
+          "value": 297,
+          "description": ""
+        },
+        {
+          "name": "KEY_F9",
+          "value": 298,
+          "description": ""
+        },
+        {
+          "name": "KEY_F10",
+          "value": 299,
+          "description": ""
+        },
+        {
+          "name": "KEY_F11",
+          "value": 300,
+          "description": ""
+        },
+        {
+          "name": "KEY_F12",
+          "value": 301,
+          "description": ""
+        },
+        {
+          "name": "KEY_LEFT_SHIFT",
+          "value": 340,
+          "description": ""
+        },
+        {
+          "name": "KEY_LEFT_CONTROL",
+          "value": 341,
+          "description": ""
+        },
+        {
+          "name": "KEY_LEFT_ALT",
+          "value": 342,
+          "description": ""
+        },
+        {
+          "name": "KEY_LEFT_SUPER",
+          "value": 343,
+          "description": ""
+        },
+        {
+          "name": "KEY_RIGHT_SHIFT",
+          "value": 344,
+          "description": ""
+        },
+        {
+          "name": "KEY_RIGHT_CONTROL",
+          "value": 345,
+          "description": ""
+        },
+        {
+          "name": "KEY_RIGHT_ALT",
+          "value": 346,
+          "description": ""
+        },
+        {
+          "name": "KEY_RIGHT_SUPER",
+          "value": 347,
+          "description": ""
+        },
+        {
+          "name": "KEY_KB_MENU",
+          "value": 348,
+          "description": ""
+        },
+        {
+          "name": "KEY_LEFT_BRACKET",
+          "value": 91,
+          "description": ""
+        },
+        {
+          "name": "KEY_BACKSLASH",
+          "value": 92,
+          "description": ""
+        },
+        {
+          "name": "KEY_RIGHT_BRACKET",
+          "value": 93,
+          "description": ""
+        },
+        {
+          "name": "KEY_GRAVE",
+          "value": 96,
+          "description": ""
+        },
+        {
+          "name": "KEY_KP_0",
+          "value": 320,
+          "description": ""
+        },
+        {
+          "name": "KEY_KP_1",
+          "value": 321,
+          "description": ""
+        },
+        {
+          "name": "KEY_KP_2",
+          "value": 322,
+          "description": ""
+        },
+        {
+          "name": "KEY_KP_3",
+          "value": 323,
+          "description": ""
+        },
+        {
+          "name": "KEY_KP_4",
+          "value": 324,
+          "description": ""
+        },
+        {
+          "name": "KEY_KP_5",
+          "value": 325,
+          "description": ""
+        },
+        {
+          "name": "KEY_KP_6",
+          "value": 326,
+          "description": ""
+        },
+        {
+          "name": "KEY_KP_7",
+          "value": 327,
+          "description": ""
+        },
+        {
+          "name": "KEY_KP_8",
+          "value": 328,
+          "description": ""
+        },
+        {
+          "name": "KEY_KP_9",
+          "value": 329,
+          "description": ""
+        },
+        {
+          "name": "KEY_KP_DECIMAL",
+          "value": 330,
+          "description": ""
+        },
+        {
+          "name": "KEY_KP_DIVIDE",
+          "value": 331,
+          "description": ""
+        },
+        {
+          "name": "KEY_KP_MULTIPLY",
+          "value": 332,
+          "description": ""
+        },
+        {
+          "name": "KEY_KP_SUBTRACT",
+          "value": 333,
+          "description": ""
+        },
+        {
+          "name": "KEY_KP_ADD",
+          "value": 334,
+          "description": ""
+        },
+        {
+          "name": "KEY_KP_ENTER",
+          "value": 335,
+          "description": ""
+        },
+        {
+          "name": "KEY_KP_EQUAL",
+          "value": 336,
+          "description": ""
+        },
+        {
+          "name": "KEY_BACK",
+          "value": 4,
+          "description": ""
+        },
+        {
+          "name": "KEY_MENU",
+          "value": 82,
+          "description": ""
+        },
+        {
+          "name": "KEY_VOLUME_UP",
+          "value": 24,
+          "description": ""
+        },
+        {
+          "name": "KEY_VOLUME_DOWN",
+          "value": 25,
+          "description": ""
+        }
+      ]
+    },
+    {
+      "name": "MouseButton",
+      "description": "",
+      "values": [
+        {
+          "name": "MOUSE_BUTTON_LEFT",
+          "value": 0,
+          "description": ""
+        },
+        {
+          "name": "MOUSE_BUTTON_RIGHT",
+          "value": 1,
+          "description": ""
+        },
+        {
+          "name": "MOUSE_BUTTON_MIDDLE",
+          "value": 2,
+          "description": ""
+        },
+        {
+          "name": "MOUSE_BUTTON_SIDE",
+          "value": 3,
+          "description": ""
+        },
+        {
+          "name": "MOUSE_BUTTON_EXTRA",
+          "value": 4,
+          "description": ""
+        },
+        {
+          "name": "MOUSE_BUTTON_FORWARD",
+          "value": 5,
+          "description": ""
+        },
+        {
+          "name": "MOUSE_BUTTON_BACK",
+          "value": 6,
+          "description": ""
+        }
+      ]
+    },
+    {
+      "name": "MouseCursor",
+      "description": "",
+      "values": [
+        {
+          "name": "MOUSE_CURSOR_DEFAULT",
+          "value": 0,
+          "description": ""
+        },
+        {
+          "name": "MOUSE_CURSOR_ARROW",
+          "value": 1,
+          "description": ""
+        },
+        {
+          "name": "MOUSE_CURSOR_IBEAM",
+          "value": 2,
+          "description": ""
+        },
+        {
+          "name": "MOUSE_CURSOR_CROSSHAIR",
+          "value": 3,
+          "description": ""
+        },
+        {
+          "name": "MOUSE_CURSOR_POINTING_HAND",
+          "value": 4,
+          "description": ""
+        },
+        {
+          "name": "MOUSE_CURSOR_RESIZE_EW",
+          "value": 5,
+          "description": ""
+        },
+        {
+          "name": "MOUSE_CURSOR_RESIZE_NS",
+          "value": 6,
+          "description": ""
+        },
+        {
+          "name": "MOUSE_CURSOR_RESIZE_NWSE",
+          "value": 7,
+          "description": ""
+        },
+        {
+          "name": "MOUSE_CURSOR_RESIZE_NESW",
+          "value": 8,
+          "description": ""
+        },
+        {
+          "name": "MOUSE_CURSOR_RESIZE_ALL",
+          "value": 9,
+          "description": ""
+        },
+        {
+          "name": "MOUSE_CURSOR_NOT_ALLOWED",
+          "value": 10,
+          "description": ""
+        }
+      ]
+    },
+    {
+      "name": "GamepadButton",
+      "description": "",
+      "values": [
+        {
+          "name": "GAMEPAD_BUTTON_UNKNOWN",
+          "value": 0,
+          "description": ""
+        },
+        {
+          "name": "GAMEPAD_BUTTON_LEFT_FACE_UP",
+          "value": 1,
+          "description": ""
+        },
+        {
+          "name": "GAMEPAD_BUTTON_LEFT_FACE_RIGHT",
+          "value": 2,
+          "description": ""
+        },
+        {
+          "name": "GAMEPAD_BUTTON_LEFT_FACE_DOWN",
+          "value": 3,
+          "description": ""
+        },
+        {
+          "name": "GAMEPAD_BUTTON_LEFT_FACE_LEFT",
+          "value": 4,
+          "description": ""
+        },
+        {
+          "name": "GAMEPAD_BUTTON_RIGHT_FACE_UP",
+          "value": 5,
+          "description": ""
+        },
+        {
+          "name": "GAMEPAD_BUTTON_RIGHT_FACE_RIGHT",
+          "value": 6,
+          "description": ""
+        },
+        {
+          "name": "GAMEPAD_BUTTON_RIGHT_FACE_DOWN",
+          "value": 7,
+          "description": ""
+        },
+        {
+          "name": "GAMEPAD_BUTTON_RIGHT_FACE_LEFT",
+          "value": 8,
+          "description": ""
+        },
+        {
+          "name": "GAMEPAD_BUTTON_LEFT_TRIGGER_1",
+          "value": 9,
+          "description": ""
+        },
+        {
+          "name": "GAMEPAD_BUTTON_LEFT_TRIGGER_2",
+          "value": 10,
+          "description": ""
+        },
+        {
+          "name": "GAMEPAD_BUTTON_RIGHT_TRIGGER_1",
+          "value": 11,
+          "description": ""
+        },
+        {
+          "name": "GAMEPAD_BUTTON_RIGHT_TRIGGER_2",
+          "value": 12,
+          "description": ""
+        },
+        {
+          "name": "GAMEPAD_BUTTON_MIDDLE_LEFT",
+          "value": 13,
+          "description": ""
+        },
+        {
+          "name": "GAMEPAD_BUTTON_MIDDLE",
+          "value": 14,
+          "description": ""
+        },
+        {
+          "name": "GAMEPAD_BUTTON_MIDDLE_RIGHT",
+          "value": 15,
+          "description": ""
+        },
+        {
+          "name": "GAMEPAD_BUTTON_LEFT_THUMB",
+          "value": 16,
+          "description": ""
+        },
+        {
+          "name": "GAMEPAD_BUTTON_RIGHT_THUMB",
+          "value": 17,
+          "description": ""
+        }
+      ]
+    },
+    {
+      "name": "GamepadAxis",
+      "description": "",
+      "values": [
+        {
+          "name": "GAMEPAD_AXIS_LEFT_X",
+          "value": 0,
+          "description": ""
+        },
+        {
+          "name": "GAMEPAD_AXIS_LEFT_Y",
+          "value": 1,
+          "description": ""
+        },
+        {
+          "name": "GAMEPAD_AXIS_RIGHT_X",
+          "value": 2,
+          "description": ""
+        },
+        {
+          "name": "GAMEPAD_AXIS_RIGHT_Y",
+          "value": 3,
+          "description": ""
+        },
+        {
+          "name": "GAMEPAD_AXIS_LEFT_TRIGGER",
+          "value": 4,
+          "description": ""
+        },
+        {
+          "name": "GAMEPAD_AXIS_RIGHT_TRIGGER",
+          "value": 5,
+          "description": ""
+        }
+      ]
+    },
+    {
+      "name": "MaterialMapIndex",
+      "description": "",
+      "values": [
+        {
+          "name": "MATERIAL_MAP_ALBEDO",
+          "value": 0,
+          "description": ""
+        },
+        {
+          "name": "MATERIAL_MAP_METALNESS",
+          "value": 1,
+          "description": ""
+        },
+        {
+          "name": "MATERIAL_MAP_NORMAL",
+          "value": 2,
+          "description": ""
+        },
+        {
+          "name": "MATERIAL_MAP_ROUGHNESS",
+          "value": 3,
+          "description": ""
+        },
+        {
+          "name": "MATERIAL_MAP_OCCLUSION",
+          "value": 4,
+          "description": ""
+        },
+        {
+          "name": "MATERIAL_MAP_EMISSION",
+          "value": 5,
+          "description": ""
+        },
+        {
+          "name": "MATERIAL_MAP_HEIGHT",
+          "value": 6,
+          "description": ""
+        },
+        {
+          "name": "MATERIAL_MAP_CUBEMAP",
+          "value": 7,
+          "description": ""
+        },
+        {
+          "name": "MATERIAL_MAP_IRRADIANCE",
+          "value": 8,
+          "description": ""
+        },
+        {
+          "name": "MATERIAL_MAP_PREFILTER",
+          "value": 9,
+          "description": ""
+        },
+        {
+          "name": "MATERIAL_MAP_BRDG",
+          "value": 10,
+          "description": ""
+        }
+      ]
+    },
+    {
+      "name": "ShaderLocationIndex",
+      "description": "",
+      "values": [
+        {
+          "name": "SHADER_LOC_VERTEX_POSITION",
+          "value": 0,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_VERTEX_TEXCOORD01",
+          "value": 1,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_VERTEX_TEXCOORD02",
+          "value": 2,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_VERTEX_NORMAL",
+          "value": 3,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_VERTEX_TANGENT",
+          "value": 4,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_VERTEX_COLOR",
+          "value": 5,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_MATRIX_MVP",
+          "value": 6,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_MATRIX_VIEW",
+          "value": 7,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_MATRIX_PROJECTION",
+          "value": 8,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_MATRIX_MODEL",
+          "value": 9,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_MATRIX_NORMAL",
+          "value": 10,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_VECTOR_VIEW",
+          "value": 11,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_COLOR_DIFFUSE",
+          "value": 12,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_COLOR_SPECULAR",
+          "value": 13,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_COLOR_AMBIENT",
+          "value": 14,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_MAP_ALBEDO",
+          "value": 15,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_MAP_METALNESS",
+          "value": 16,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_MAP_NORMAL",
+          "value": 17,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_MAP_ROUGHNESS",
+          "value": 18,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_MAP_OCCLUSION",
+          "value": 19,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_MAP_EMISSION",
+          "value": 20,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_MAP_HEIGHT",
+          "value": 21,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_MAP_CUBEMAP",
+          "value": 22,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_MAP_IRRADIANCE",
+          "value": 23,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_MAP_PREFILTER",
+          "value": 24,
+          "description": ""
+        },
+        {
+          "name": "SHADER_LOC_MAP_BRDF",
+          "value": 25,
+          "description": ""
+        }
+      ]
+    },
+    {
+      "name": "ShaderUniformDataType",
+      "description": "",
+      "values": [
+        {
+          "name": "SHADER_UNIFORM_FLOAT",
+          "value": 0,
+          "description": ""
+        },
+        {
+          "name": "SHADER_UNIFORM_VEC2",
+          "value": 1,
+          "description": ""
+        },
+        {
+          "name": "SHADER_UNIFORM_VEC3",
+          "value": 2,
+          "description": ""
+        },
+        {
+          "name": "SHADER_UNIFORM_VEC4",
+          "value": 3,
+          "description": ""
+        },
+        {
+          "name": "SHADER_UNIFORM_INT",
+          "value": 4,
+          "description": ""
+        },
+        {
+          "name": "SHADER_UNIFORM_IVEC2",
+          "value": 5,
+          "description": ""
+        },
+        {
+          "name": "SHADER_UNIFORM_IVEC3",
+          "value": 6,
+          "description": ""
+        },
+        {
+          "name": "SHADER_UNIFORM_IVEC4",
+          "value": 7,
+          "description": ""
+        },
+        {
+          "name": "SHADER_UNIFORM_SAMPLER2D",
+          "value": 8,
+          "description": ""
+        }
+      ]
+    },
+    {
+      "name": "ShaderAttributeDataType",
+      "description": "",
+      "values": [
+        {
+          "name": "SHADER_ATTRIB_FLOAT",
+          "value": 0,
+          "description": ""
+        },
+        {
+          "name": "SHADER_ATTRIB_VEC2",
+          "value": 1,
+          "description": ""
+        },
+        {
+          "name": "SHADER_ATTRIB_VEC3",
+          "value": 2,
+          "description": ""
+        },
+        {
+          "name": "SHADER_ATTRIB_VEC4",
+          "value": 3,
+          "description": ""
+        }
+      ]
+    },
+    {
+      "name": "PixelFormat",
+      "description": "",
+      "values": [
+        {
+          "name": "PIXELFORMAT_UNCOMPRESSED_GRAYSCALE",
+          "value": 1,
+          "description": ""
+        },
+        {
+          "name": "PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA",
+          "value": 2,
+          "description": ""
+        },
+        {
+          "name": "PIXELFORMAT_UNCOMPRESSED_R5G6B5",
+          "value": 3,
+          "description": ""
+        },
+        {
+          "name": "PIXELFORMAT_UNCOMPRESSED_R8G8B8",
+          "value": 4,
+          "description": ""
+        },
+        {
+          "name": "PIXELFORMAT_UNCOMPRESSED_R5G5B5A1",
+          "value": 5,
+          "description": ""
+        },
+        {
+          "name": "PIXELFORMAT_UNCOMPRESSED_R4G4B4A4",
+          "value": 6,
+          "description": ""
+        },
+        {
+          "name": "PIXELFORMAT_UNCOMPRESSED_R8G8B8A8",
+          "value": 7,
+          "description": ""
+        },
+        {
+          "name": "PIXELFORMAT_UNCOMPRESSED_R32",
+          "value": 8,
+          "description": ""
+        },
+        {
+          "name": "PIXELFORMAT_UNCOMPRESSED_R32G32B32",
+          "value": 9,
+          "description": ""
+        },
+        {
+          "name": "PIXELFORMAT_UNCOMPRESSED_R32G32B32A32",
+          "value": 10,
+          "description": ""
+        },
+        {
+          "name": "PIXELFORMAT_COMPRESSED_DXT1_RGB",
+          "value": 11,
+          "description": ""
+        },
+        {
+          "name": "PIXELFORMAT_COMPRESSED_DXT1_RGBA",
+          "value": 12,
+          "description": ""
+        },
+        {
+          "name": "PIXELFORMAT_COMPRESSED_DXT3_RGBA",
+          "value": 13,
+          "description": ""
+        },
+        {
+          "name": "PIXELFORMAT_COMPRESSED_DXT5_RGBA",
+          "value": 14,
+          "description": ""
+        },
+        {
+          "name": "PIXELFORMAT_COMPRESSED_ETC1_RGB",
+          "value": 15,
+          "description": ""
+        },
+        {
+          "name": "PIXELFORMAT_COMPRESSED_ETC2_RGB",
+          "value": 16,
+          "description": ""
+        },
+        {
+          "name": "PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA",
+          "value": 17,
+          "description": ""
+        },
+        {
+          "name": "PIXELFORMAT_COMPRESSED_PVRT_RGB",
+          "value": 18,
+          "description": ""
+        },
+        {
+          "name": "PIXELFORMAT_COMPRESSED_PVRT_RGBA",
+          "value": 19,
+          "description": ""
+        },
+        {
+          "name": "PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA",
+          "value": 20,
+          "description": ""
+        },
+        {
+          "name": "PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA",
+          "value": 21,
+          "description": ""
+        }
+      ]
+    },
+    {
+      "name": "TextureFilter",
+      "description": "",
+      "values": [
+        {
+          "name": "TEXTURE_FILTER_POINT",
+          "value": 0,
+          "description": ""
+        },
+        {
+          "name": "TEXTURE_FILTER_BILINEAR",
+          "value": 1,
+          "description": ""
+        },
+        {
+          "name": "TEXTURE_FILTER_TRILINEAR",
+          "value": 2,
+          "description": ""
+        },
+        {
+          "name": "TEXTURE_FILTER_ANISOTROPIC_4X",
+          "value": 3,
+          "description": ""
+        },
+        {
+          "name": "TEXTURE_FILTER_ANISOTROPIC_8X",
+          "value": 4,
+          "description": ""
+        },
+        {
+          "name": "TEXTURE_FILTER_ANISOTROPIC_16X",
+          "value": 5,
+          "description": ""
+        }
+      ]
+    },
+    {
+      "name": "TextureWrap",
+      "description": "",
+      "values": [
+        {
+          "name": "TEXTURE_WRAP_REPEAT",
+          "value": 0,
+          "description": ""
+        },
+        {
+          "name": "TEXTURE_WRAP_CLAMP",
+          "value": 1,
+          "description": ""
+        },
+        {
+          "name": "TEXTURE_WRAP_MIRROR_REPEAT",
+          "value": 2,
+          "description": ""
+        },
+        {
+          "name": "TEXTURE_WRAP_MIRROR_CLAMP",
+          "value": 3,
+          "description": ""
+        }
+      ]
+    },
+    {
+      "name": "CubemapLayout",
+      "description": "",
+      "values": [
+        {
+          "name": "CUBEMAP_LAYOUT_AUTO_DETECT",
+          "value": 0,
+          "description": ""
+        },
+        {
+          "name": "CUBEMAP_LAYOUT_LINE_VERTICAL",
+          "value": 1,
+          "description": ""
+        },
+        {
+          "name": "CUBEMAP_LAYOUT_LINE_HORIZONTAL",
+          "value": 2,
+          "description": ""
+        },
+        {
+          "name": "CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR",
+          "value": 3,
+          "description": ""
+        },
+        {
+          "name": "CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE",
+          "value": 4,
+          "description": ""
+        },
+        {
+          "name": "CUBEMAP_LAYOUT_PANORAMA",
+          "value": 5,
+          "description": ""
+        }
+      ]
+    },
+    {
+      "name": "FontType",
+      "description": "",
+      "values": [
+        {
+          "name": "FONT_DEFAULT",
+          "value": 0,
+          "description": ""
+        },
+        {
+          "name": "FONT_BITMAP",
+          "value": 1,
+          "description": ""
+        },
+        {
+          "name": "FONT_SDF",
+          "value": 2,
+          "description": ""
+        }
+      ]
+    },
+    {
+      "name": "BlendMode",
+      "description": "",
+      "values": [
+        {
+          "name": "BLEND_ALPHA",
+          "value": 0,
+          "description": ""
+        },
+        {
+          "name": "BLEND_ADDITIVE",
+          "value": 1,
+          "description": ""
+        },
+        {
+          "name": "BLEND_MULTIPLIED",
+          "value": 2,
+          "description": ""
+        },
+        {
+          "name": "BLEND_ADD_COLORS",
+          "value": 3,
+          "description": ""
+        },
+        {
+          "name": "BLEND_SUBTRACT_COLORS",
+          "value": 4,
+          "description": ""
+        },
+        {
+          "name": "BLEND_CUSTOM",
+          "value": 5,
+          "description": ""
+        }
+      ]
+    },
+    {
+      "name": "Gesture",
+      "description": "",
+      "values": [
+        {
+          "name": "GESTURE_NONE",
+          "value": 0,
+          "description": ""
+        },
+        {
+          "name": "GESTURE_TAP",
+          "value": 1,
+          "description": ""
+        },
+        {
+          "name": "GESTURE_DOUBLETAP",
+          "value": 2,
+          "description": ""
+        },
+        {
+          "name": "GESTURE_HOLD",
+          "value": 4,
+          "description": ""
+        },
+        {
+          "name": "GESTURE_DRAG",
+          "value": 8,
+          "description": ""
+        },
+        {
+          "name": "GESTURE_SWIPE_RIGHT",
+          "value": 16,
+          "description": ""
+        },
+        {
+          "name": "GESTURE_SWIPE_LEFT",
+          "value": 32,
+          "description": ""
+        },
+        {
+          "name": "GESTURE_SWIPE_UP",
+          "value": 64,
+          "description": ""
+        },
+        {
+          "name": "GESTURE_SWIPE_DOWN",
+          "value": 128,
+          "description": ""
+        },
+        {
+          "name": "GESTURE_PINCH_IN",
+          "value": 256,
+          "description": ""
+        },
+        {
+          "name": "GESTURE_PINCH_OUT",
+          "value": 512,
+          "description": ""
+        }
+      ]
+    },
+    {
+      "name": "CameraMode",
+      "description": "",
+      "values": [
+        {
+          "name": "CAMERA_CUSTOM",
+          "value": 0,
+          "description": ""
+        },
+        {
+          "name": "CAMERA_FREE",
+          "value": 1,
+          "description": ""
+        },
+        {
+          "name": "CAMERA_ORBITAL",
+          "value": 2,
+          "description": ""
+        },
+        {
+          "name": "CAMERA_FIRST_PERSON",
+          "value": 3,
+          "description": ""
+        },
+        {
+          "name": "CAMERA_THIRD_PERSON",
+          "value": 4,
+          "description": ""
+        }
+      ]
+    },
+    {
+      "name": "CameraProjection",
+      "description": "",
+      "values": [
+        {
+          "name": "CAMERA_PERSPECTIVE",
+          "value": 0,
+          "description": ""
+        },
+        {
+          "name": "CAMERA_ORTHOGRAPHIC",
+          "value": 1,
+          "description": ""
+        }
+      ]
+    },
+    {
+      "name": "NPatchLayout",
+      "description": "",
+      "values": [
+        {
+          "name": "NPATCH_NINE_PATCH",
+          "value": 0,
+          "description": ""
+        },
+        {
+          "name": "NPATCH_THREE_PATCH_VERTICAL",
+          "value": 1,
+          "description": ""
+        },
+        {
+          "name": "NPATCH_THREE_PATCH_HORIZONTAL",
+          "value": 2,
+          "description": ""
+        }
+      ]
+    }
+  ],
+  "functions": [
+    {
+      "name": "InitWindow",
+      "description": "Initialize window and OpenGL context",
+      "returnType": "void",
+      "params": {
+        "width": "int",
+        "height": "int",
+        "title": "const char *"
+      }
+    },
+    {
+      "name": "WindowShouldClose",
+      "description": "Check if KEY_ESCAPE pressed or Close icon pressed",
+      "returnType": "bool"
+    },
+    {
+      "name": "CloseWindow",
+      "description": "Close window and unload OpenGL context",
+      "returnType": "void"
+    },
+    {
+      "name": "IsWindowReady",
+      "description": "Check if window has been initialized successfully",
+      "returnType": "bool"
+    },
+    {
+      "name": "IsWindowFullscreen",
+      "description": "Check if window is currently fullscreen",
+      "returnType": "bool"
+    },
+    {
+      "name": "IsWindowHidden",
+      "description": "Check if window is currently hidden (only PLATFORM_DESKTOP)",
+      "returnType": "bool"
+    },
+    {
+      "name": "IsWindowMinimized",
+      "description": "Check if window is currently minimized (only PLATFORM_DESKTOP)",
+      "returnType": "bool"
+    },
+    {
+      "name": "IsWindowMaximized",
+      "description": "Check if window is currently maximized (only PLATFORM_DESKTOP)",
+      "returnType": "bool"
+    },
+    {
+      "name": "IsWindowFocused",
+      "description": "Check if window is currently focused (only PLATFORM_DESKTOP)",
+      "returnType": "bool"
+    },
+    {
+      "name": "IsWindowResized",
+      "description": "Check if window has been resized last frame",
+      "returnType": "bool"
+    },
+    {
+      "name": "IsWindowState",
+      "description": "Check if one specific window flag is enabled",
+      "returnType": "bool",
+      "params": {
+        "flag": "unsigned int"
+      }
+    },
+    {
+      "name": "SetWindowState",
+      "description": "Set window configuration state using flags",
+      "returnType": "void",
+      "params": {
+        "flags": "unsigned int"
+      }
+    },
+    {
+      "name": "ClearWindowState",
+      "description": "Clear window configuration state flags",
+      "returnType": "void",
+      "params": {
+        "flags": "unsigned int"
+      }
+    },
+    {
+      "name": "ToggleFullscreen",
+      "description": "Toggle window state: fullscreen/windowed (only PLATFORM_DESKTOP)",
+      "returnType": "void"
+    },
+    {
+      "name": "MaximizeWindow",
+      "description": "Set window state: maximized, if resizable (only PLATFORM_DESKTOP)",
+      "returnType": "void"
+    },
+    {
+      "name": "MinimizeWindow",
+      "description": "Set window state: minimized, if resizable (only PLATFORM_DESKTOP)",
+      "returnType": "void"
+    },
+    {
+      "name": "RestoreWindow",
+      "description": "Set window state: not minimized/maximized (only PLATFORM_DESKTOP)",
+      "returnType": "void"
+    },
+    {
+      "name": "SetWindowIcon",
+      "description": "Set icon for window (only PLATFORM_DESKTOP)",
+      "returnType": "void",
+      "params": {
+        "image": "Image"
+      }
+    },
+    {
+      "name": "SetWindowTitle",
+      "description": "Set title for window (only PLATFORM_DESKTOP)",
+      "returnType": "void",
+      "params": {
+        "title": "const char *"
+      }
+    },
+    {
+      "name": "SetWindowPosition",
+      "description": "Set window position on screen (only PLATFORM_DESKTOP)",
+      "returnType": "void",
+      "params": {
+        "x": "int",
+        "y": "int"
+      }
+    },
+    {
+      "name": "SetWindowMonitor",
+      "description": "Set monitor for the current window (fullscreen mode)",
+      "returnType": "void",
+      "params": {
+        "monitor": "int"
+      }
+    },
+    {
+      "name": "SetWindowMinSize",
+      "description": "Set window minimum dimensions (for FLAG_WINDOW_RESIZABLE)",
+      "returnType": "void",
+      "params": {
+        "width": "int",
+        "height": "int"
+      }
+    },
+    {
+      "name": "SetWindowSize",
+      "description": "Set window dimensions",
+      "returnType": "void",
+      "params": {
+        "width": "int",
+        "height": "int"
+      }
+    },
+    {
+      "name": "GetWindowHandle",
+      "description": "Get native window handle",
+      "returnType": "void *"
+    },
+    {
+      "name": "GetScreenWidth",
+      "description": "Get current screen width",
+      "returnType": "int"
+    },
+    {
+      "name": "GetScreenHeight",
+      "description": "Get current screen height",
+      "returnType": "int"
+    },
+    {
+      "name": "GetMonitorCount",
+      "description": "Get number of connected monitors",
+      "returnType": "int"
+    },
+    {
+      "name": "GetCurrentMonitor",
+      "description": "Get current connected monitor",
+      "returnType": "int"
+    },
+    {
+      "name": "GetMonitorPosition",
+      "description": "Get specified monitor position",
+      "returnType": "Vector2",
+      "params": {
+        "monitor": "int"
+      }
+    },
+    {
+      "name": "GetMonitorWidth",
+      "description": "Get specified monitor width (max available by monitor)",
+      "returnType": "int",
+      "params": {
+        "monitor": "int"
+      }
+    },
+    {
+      "name": "GetMonitorHeight",
+      "description": "Get specified monitor height (max available by monitor)",
+      "returnType": "int",
+      "params": {
+        "monitor": "int"
+      }
+    },
+    {
+      "name": "GetMonitorPhysicalWidth",
+      "description": "Get specified monitor physical width in millimetres",
+      "returnType": "int",
+      "params": {
+        "monitor": "int"
+      }
+    },
+    {
+      "name": "GetMonitorPhysicalHeight",
+      "description": "Get specified monitor physical height in millimetres",
+      "returnType": "int",
+      "params": {
+        "monitor": "int"
+      }
+    },
+    {
+      "name": "GetMonitorRefreshRate",
+      "description": "Get specified monitor refresh rate",
+      "returnType": "int",
+      "params": {
+        "monitor": "int"
+      }
+    },
+    {
+      "name": "GetWindowPosition",
+      "description": "Get window position XY on monitor",
+      "returnType": "Vector2"
+    },
+    {
+      "name": "GetWindowScaleDPI",
+      "description": "Get window scale DPI factor",
+      "returnType": "Vector2"
+    },
+    {
+      "name": "GetMonitorName",
+      "description": "Get the human-readable, UTF-8 encoded name of the primary monitor",
+      "returnType": "const char *",
+      "params": {
+        "monitor": "int"
+      }
+    },
+    {
+      "name": "SetClipboardText",
+      "description": "Set clipboard text content",
+      "returnType": "void",
+      "params": {
+        "text": "const char *"
+      }
+    },
+    {
+      "name": "GetClipboardText",
+      "description": "Get clipboard text content",
+      "returnType": "const char *"
+    },
+    {
+      "name": "ShowCursor",
+      "description": "Shows cursor",
+      "returnType": "void"
+    },
+    {
+      "name": "HideCursor",
+      "description": "Hides cursor",
+      "returnType": "void"
+    },
+    {
+      "name": "IsCursorHidden",
+      "description": "Check if cursor is not visible",
+      "returnType": "bool"
+    },
+    {
+      "name": "EnableCursor",
+      "description": "Enables cursor (unlock cursor)",
+      "returnType": "void"
+    },
+    {
+      "name": "DisableCursor",
+      "description": "Disables cursor (lock cursor)",
+      "returnType": "void"
+    },
+    {
+      "name": "IsCursorOnScreen",
+      "description": "Check if cursor is on the screen",
+      "returnType": "bool"
+    },
+    {
+      "name": "ClearBackground",
+      "description": "Set background color (framebuffer clear color)",
+      "returnType": "void",
+      "params": {
+        "color": "Color"
+      }
+    },
+    {
+      "name": "BeginDrawing",
+      "description": "Setup canvas (framebuffer) to start drawing",
+      "returnType": "void"
+    },
+    {
+      "name": "EndDrawing",
+      "description": "End canvas drawing and swap buffers (double buffering)",
+      "returnType": "void"
+    },
+    {
+      "name": "BeginMode2D",
+      "description": "Begin 2D mode with custom camera (2D)",
+      "returnType": "void",
+      "params": {
+        "camera": "Camera2D"
+      }
+    },
+    {
+      "name": "EndMode2D",
+      "description": "Ends 2D mode with custom camera",
+      "returnType": "void"
+    },
+    {
+      "name": "BeginMode3D",
+      "description": "Begin 3D mode with custom camera (3D)",
+      "returnType": "void",
+      "params": {
+        "camera": "Camera3D"
+      }
+    },
+    {
+      "name": "EndMode3D",
+      "description": "Ends 3D mode and returns to default 2D orthographic mode",
+      "returnType": "void"
+    },
+    {
+      "name": "BeginTextureMode",
+      "description": "Begin drawing to render texture",
+      "returnType": "void",
+      "params": {
+        "target": "RenderTexture2D"
+      }
+    },
+    {
+      "name": "EndTextureMode",
+      "description": "Ends drawing to render texture",
+      "returnType": "void"
+    },
+    {
+      "name": "BeginShaderMode",
+      "description": "Begin custom shader drawing",
+      "returnType": "void",
+      "params": {
+        "shader": "Shader"
+      }
+    },
+    {
+      "name": "EndShaderMode",
+      "description": "End custom shader drawing (use default shader)",
+      "returnType": "void"
+    },
+    {
+      "name": "BeginBlendMode",
+      "description": "Begin blending mode (alpha, additive, multiplied, subtract, custom)",
+      "returnType": "void",
+      "params": {
+        "mode": "int"
+      }
+    },
+    {
+      "name": "EndBlendMode",
+      "description": "End blending mode (reset to default: alpha blending)",
+      "returnType": "void"
+    },
+    {
+      "name": "BeginScissorMode",
+      "description": "Begin scissor mode (define screen area for following drawing)",
+      "returnType": "void",
+      "params": {
+        "x": "int",
+        "y": "int",
+        "width": "int",
+        "height": "int"
+      }
+    },
+    {
+      "name": "EndScissorMode",
+      "description": "End scissor mode",
+      "returnType": "void"
+    },
+    {
+      "name": "BeginVrStereoMode",
+      "description": "Begin stereo rendering (requires VR simulator)",
+      "returnType": "void",
+      "params": {
+        "config": "VrStereoConfig"
+      }
+    },
+    {
+      "name": "EndVrStereoMode",
+      "description": "End stereo rendering (requires VR simulator)",
+      "returnType": "void"
+    },
+    {
+      "name": "LoadVrStereoConfig",
+      "description": "Load VR stereo config for VR simulator device parameters",
+      "returnType": "VrStereoConfig",
+      "params": {
+        "device": "VrDeviceInfo"
+      }
+    },
+    {
+      "name": "UnloadVrStereoConfig",
+      "description": "Unload VR stereo config",
+      "returnType": "void",
+      "params": {
+        "config": "VrStereoConfig"
+      }
+    },
+    {
+      "name": "LoadShader",
+      "description": "Load shader from files and bind default locations",
+      "returnType": "Shader",
+      "params": {
+        "vsFileName": "const char *",
+        "fsFileName": "const char *"
+      }
+    },
+    {
+      "name": "LoadShaderFromMemory",
+      "description": "Load shader from code strings and bind default locations",
+      "returnType": "Shader",
+      "params": {
+        "vsCode": "const char *",
+        "fsCode": "const char *"
+      }
+    },
+    {
+      "name": "GetShaderLocation",
+      "description": "Get shader uniform location",
+      "returnType": "int",
+      "params": {
+        "shader": "Shader",
+        "uniformName": "const char *"
+      }
+    },
+    {
+      "name": "GetShaderLocationAttrib",
+      "description": "Get shader attribute location",
+      "returnType": "int",
+      "params": {
+        "shader": "Shader",
+        "attribName": "const char *"
+      }
+    },
+    {
+      "name": "SetShaderValue",
+      "description": "Set shader uniform value",
+      "returnType": "void",
+      "params": {
+        "shader": "Shader",
+        "locIndex": "int",
+        "value": "const void *",
+        "uniformType": "int"
+      }
+    },
+    {
+      "name": "SetShaderValueV",
+      "description": "Set shader uniform value vector",
+      "returnType": "void",
+      "params": {
+        "shader": "Shader",
+        "locIndex": "int",
+        "value": "const void *",
+        "uniformType": "int",
+        "count": "int"
+      }
+    },
+    {
+      "name": "SetShaderValueMatrix",
+      "description": "Set shader uniform value (matrix 4x4)",
+      "returnType": "void",
+      "params": {
+        "shader": "Shader",
+        "locIndex": "int",
+        "mat": "Matrix"
+      }
+    },
+    {
+      "name": "SetShaderValueTexture",
+      "description": "Set shader uniform value for texture (sampler2d)",
+      "returnType": "void",
+      "params": {
+        "shader": "Shader",
+        "locIndex": "int",
+        "texture": "Texture2D"
+      }
+    },
+    {
+      "name": "UnloadShader",
+      "description": "Unload shader from GPU memory (VRAM)",
+      "returnType": "void",
+      "params": {
+        "shader": "Shader"
+      }
+    },
+    {
+      "name": "GetMouseRay",
+      "description": "Get a ray trace from mouse position",
+      "returnType": "Ray",
+      "params": {
+        "mousePosition": "Vector2",
+        "camera": "Camera"
+      }
+    },
+    {
+      "name": "GetCameraMatrix",
+      "description": "Get camera transform matrix (view matrix)",
+      "returnType": "Matrix",
+      "params": {
+        "camera": "Camera"
+      }
+    },
+    {
+      "name": "GetCameraMatrix2D",
+      "description": "Get camera 2d transform matrix",
+      "returnType": "Matrix",
+      "params": {
+        "camera": "Camera2D"
+      }
+    },
+    {
+      "name": "GetWorldToScreen",
+      "description": "Get the screen space position for a 3d world space position",
+      "returnType": "Vector2",
+      "params": {
+        "position": "Vector3",
+        "camera": "Camera"
+      }
+    },
+    {
+      "name": "GetWorldToScreenEx",
+      "description": "Get size position for a 3d world space position",
+      "returnType": "Vector2",
+      "params": {
+        "position": "Vector3",
+        "camera": "Camera",
+        "width": "int",
+        "height": "int"
+      }
+    },
+    {
+      "name": "GetWorldToScreen2D",
+      "description": "Get the screen space position for a 2d camera world space position",
+      "returnType": "Vector2",
+      "params": {
+        "position": "Vector2",
+        "camera": "Camera2D"
+      }
+    },
+    {
+      "name": "GetScreenToWorld2D",
+      "description": "Get the world space position for a 2d camera screen space position",
+      "returnType": "Vector2",
+      "params": {
+        "position": "Vector2",
+        "camera": "Camera2D"
+      }
+    },
+    {
+      "name": "SetTargetFPS",
+      "description": "Set target FPS (maximum)",
+      "returnType": "void",
+      "params": {
+        "fps": "int"
+      }
+    },
+    {
+      "name": "GetFPS",
+      "description": "Get current FPS",
+      "returnType": "int"
+    },
+    {
+      "name": "GetFrameTime",
+      "description": "Get time in seconds for last frame drawn (delta time)",
+      "returnType": "float"
+    },
+    {
+      "name": "GetTime",
+      "description": "Get elapsed time in seconds since InitWindow()",
+      "returnType": "double"
+    },
+    {
+      "name": "GetRandomValue",
+      "description": "Get a random value between min and max (both included)",
+      "returnType": "int",
+      "params": {
+        "min": "int",
+        "max": "int"
+      }
+    },
+    {
+      "name": "TakeScreenshot",
+      "description": "Takes a screenshot of current screen (filename extension defines format)",
+      "returnType": "void",
+      "params": {
+        "fileName": "const char *"
+      }
+    },
+    {
+      "name": "SetConfigFlags",
+      "description": "Setup init configuration flags (view FLAGS)",
+      "returnType": "void",
+      "params": {
+        "flags": "unsigned int"
+      }
+    },
+    {
+      "name": "TraceLog",
+      "description": "Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR...)",
+      "returnType": "void",
+      "params": {
+        "logLevel": "int",
+        "text": "const char *",
+        "": ""
+      }
+    },
+    {
+      "name": "SetTraceLogLevel",
+      "description": "Set the current threshold (minimum) log level",
+      "returnType": "void",
+      "params": {
+        "logLevel": "int"
+      }
+    },
+    {
+      "name": "MemAlloc",
+      "description": "Internal memory allocator",
+      "returnType": "void *",
+      "params": {
+        "size": "int"
+      }
+    },
+    {
+      "name": "MemRealloc",
+      "description": "Internal memory reallocator",
+      "returnType": "void *",
+      "params": {
+        "ptr": "void *",
+        "size": "int"
+      }
+    },
+    {
+      "name": "MemFree",
+      "description": "Internal memory free",
+      "returnType": "void",
+      "params": {
+        "ptr": "void *"
+      }
+    },
+    {
+      "name": "SetTraceLogCallback",
+      "description": "Set custom trace log",
+      "returnType": "void",
+      "params": {
+        "callback": "TraceLogCallback"
+      }
+    },
+    {
+      "name": "SetLoadFileDataCallback",
+      "description": "Set custom file binary data loader",
+      "returnType": "void",
+      "params": {
+        "callback": "LoadFileDataCallback"
+      }
+    },
+    {
+      "name": "SetSaveFileDataCallback",
+      "description": "Set custom file binary data saver",
+      "returnType": "void",
+      "params": {
+        "callback": "SaveFileDataCallback"
+      }
+    },
+    {
+      "name": "SetLoadFileTextCallback",
+      "description": "Set custom file text data loader",
+      "returnType": "void",
+      "params": {
+        "callback": "LoadFileTextCallback"
+      }
+    },
+    {
+      "name": "SetSaveFileTextCallback",
+      "description": "Set custom file text data saver",
+      "returnType": "void",
+      "params": {
+        "callback": "SaveFileTextCallback"
+      }
+    },
+    {
+      "name": "LoadFileData",
+      "description": "Load file data as byte array (read)",
+      "returnType": "unsigned char *",
+      "params": {
+        "fileName": "const char *",
+        "bytesRead": "unsigned int *"
+      }
+    },
+    {
+      "name": "UnloadFileData",
+      "description": "Unload file data allocated by LoadFileData()",
+      "returnType": "void",
+      "params": {
+        "data": "unsigned char *"
+      }
+    },
+    {
+      "name": "SaveFileData",
+      "description": "Save data to file from byte array (write), returns true on success",
+      "returnType": "bool",
+      "params": {
+        "fileName": "const char *",
+        "data": "void *",
+        "bytesToWrite": "unsigned int"
+      }
+    },
+    {
+      "name": "LoadFileText",
+      "description": "Load text data from file (read), returns a ' 0' terminated string",
+      "returnType": "char *",
+      "params": {
+        "fileName": "const char *"
+      }
+    },
+    {
+      "name": "UnloadFileText",
+      "description": "Unload file text data allocated by LoadFileText()",
+      "returnType": "void",
+      "params": {
+        "text": "char *"
+      }
+    },
+    {
+      "name": "SaveFileText",
+      "description": "Save text data to file (write), string must be ' 0' terminated, returns true on success",
+      "returnType": "bool",
+      "params": {
+        "fileName": "const char *",
+        "text": "char *"
+      }
+    },
+    {
+      "name": "FileExists",
+      "description": "Check if file exists",
+      "returnType": "bool",
+      "params": {
+        "fileName": "const char *"
+      }
+    },
+    {
+      "name": "DirectoryExists",
+      "description": "Check if a directory path exists",
+      "returnType": "bool",
+      "params": {
+        "dirPath": "const char *"
+      }
+    },
+    {
+      "name": "IsFileExtension",
+      "description": "Check file extension (including point: .png, .wav)",
+      "returnType": "bool",
+      "params": {
+        "fileName": "const char *",
+        "ext": "const char *"
+      }
+    },
+    {
+      "name": "GetFileExtension",
+      "description": "Get pointer to extension for a filename string (includes dot: '.png')",
+      "returnType": "const char *",
+      "params": {
+        "fileName": "const char *"
+      }
+    },
+    {
+      "name": "GetFileName",
+      "description": "Get pointer to filename for a path string",
+      "returnType": "const char *",
+      "params": {
+        "filePath": "const char *"
+      }
+    },
+    {
+      "name": "GetFileNameWithoutExt",
+      "description": "Get filename string without extension (uses static string)",
+      "returnType": "const char *",
+      "params": {
+        "filePath": "const char *"
+      }
+    },
+    {
+      "name": "GetDirectoryPath",
+      "description": "Get full path for a given fileName with path (uses static string)",
+      "returnType": "const char *",
+      "params": {
+        "filePath": "const char *"
+      }
+    },
+    {
+      "name": "GetPrevDirectoryPath",
+      "description": "Get previous directory path for a given path (uses static string)",
+      "returnType": "const char *",
+      "params": {
+        "dirPath": "const char *"
+      }
+    },
+    {
+      "name": "GetWorkingDirectory",
+      "description": "Get current working directory (uses static string)",
+      "returnType": "const char *"
+    },
+    {
+      "name": "GetDirectoryFiles",
+      "description": "Get filenames in a directory path (memory should be freed)",
+      "returnType": "char **",
+      "params": {
+        "dirPath": "const char *",
+        "count": "int *"
+      }
+    },
+    {
+      "name": "ClearDirectoryFiles",
+      "description": "Clear directory files paths buffers (free memory)",
+      "returnType": "void"
+    },
+    {
+      "name": "ChangeDirectory",
+      "description": "Change working directory, return true on success",
+      "returnType": "bool",
+      "params": {
+        "dir": "const char *"
+      }
+    },
+    {
+      "name": "IsFileDropped",
+      "description": "Check if a file has been dropped into window",
+      "returnType": "bool"
+    },
+    {
+      "name": "GetDroppedFiles",
+      "description": "Get dropped files names (memory should be freed)",
+      "returnType": "char **",
+      "params": {
+        "count": "int *"
+      }
+    },
+    {
+      "name": "ClearDroppedFiles",
+      "description": "Clear dropped files paths buffer (free memory)",
+      "returnType": "void"
+    },
+    {
+      "name": "GetFileModTime",
+      "description": "Get file modification time (last write time)",
+      "returnType": "long",
+      "params": {
+        "fileName": "const char *"
+      }
+    },
+    {
+      "name": "CompressData",
+      "description": "Compress data (DEFLATE algorithm)",
+      "returnType": "unsigned char *",
+      "params": {
+        "data": "unsigned char *",
+        "dataLength": "int",
+        "compDataLength": "int *"
+      }
+    },
+    {
+      "name": "DecompressData",
+      "description": "Decompress data (DEFLATE algorithm)",
+      "returnType": "unsigned char *",
+      "params": {
+        "compData": "unsigned char *",
+        "compDataLength": "int",
+        "dataLength": "int *"
+      }
+    },
+    {
+      "name": "SaveStorageValue",
+      "description": "Save integer value to storage file (to defined position), returns true on success",
+      "returnType": "bool",
+      "params": {
+        "position": "unsigned int",
+        "value": "int"
+      }
+    },
+    {
+      "name": "LoadStorageValue",
+      "description": "Load integer value from storage file (from defined position)",
+      "returnType": "int",
+      "params": {
+        "position": "unsigned int"
+      }
+    },
+    {
+      "name": "OpenURL",
+      "description": "Open URL with default system browser (if available)",
+      "returnType": "void",
+      "params": {
+        "url": "const char *"
+      }
+    },
+    {
+      "name": "IsKeyPressed",
+      "description": "Check if a key has been pressed once",
+      "returnType": "bool",
+      "params": {
+        "key": "int"
+      }
+    },
+    {
+      "name": "IsKeyDown",
+      "description": "Check if a key is being pressed",
+      "returnType": "bool",
+      "params": {
+        "key": "int"
+      }
+    },
+    {
+      "name": "IsKeyReleased",
+      "description": "Check if a key has been released once",
+      "returnType": "bool",
+      "params": {
+        "key": "int"
+      }
+    },
+    {
+      "name": "IsKeyUp",
+      "description": "Check if a key is NOT being pressed",
+      "returnType": "bool",
+      "params": {
+        "key": "int"
+      }
+    },
+    {
+      "name": "SetExitKey",
+      "description": "Set a custom key to exit program (default is ESC)",
+      "returnType": "void",
+      "params": {
+        "key": "int"
+      }
+    },
+    {
+      "name": "GetKeyPressed",
+      "description": "Get key pressed (keycode), call it multiple times for keys queued",
+      "returnType": "int"
+    },
+    {
+      "name": "GetCharPressed",
+      "description": "Get char pressed (unicode), call it multiple times for chars queued",
+      "returnType": "int"
+    },
+    {
+      "name": "IsGamepadAvailable",
+      "description": "Check if a gamepad is available",
+      "returnType": "bool",
+      "params": {
+        "gamepad": "int"
+      }
+    },
+    {
+      "name": "IsGamepadName",
+      "description": "Check gamepad name (if available)",
+      "returnType": "bool",
+      "params": {
+        "gamepad": "int",
+        "name": "const char *"
+      }
+    },
+    {
+      "name": "GetGamepadName",
+      "description": "Get gamepad internal name id",
+      "returnType": "const char *",
+      "params": {
+        "gamepad": "int"
+      }
+    },
+    {
+      "name": "IsGamepadButtonPressed",
+      "description": "Check if a gamepad button has been pressed once",
+      "returnType": "bool",
+      "params": {
+        "gamepad": "int",
+        "button": "int"
+      }
+    },
+    {
+      "name": "IsGamepadButtonDown",
+      "description": "Check if a gamepad button is being pressed",
+      "returnType": "bool",
+      "params": {
+        "gamepad": "int",
+        "button": "int"
+      }
+    },
+    {
+      "name": "IsGamepadButtonReleased",
+      "description": "Check if a gamepad button has been released once",
+      "returnType": "bool",
+      "params": {
+        "gamepad": "int",
+        "button": "int"
+      }
+    },
+    {
+      "name": "IsGamepadButtonUp",
+      "description": "Check if a gamepad button is NOT being pressed",
+      "returnType": "bool",
+      "params": {
+        "gamepad": "int",
+        "button": "int"
+      }
+    },
+    {
+      "name": "GetGamepadButtonPressed",
+      "description": "Get the last gamepad button pressed",
+      "returnType": "int"
+    },
+    {
+      "name": "GetGamepadAxisCount",
+      "description": "Get gamepad axis count for a gamepad",
+      "returnType": "int",
+      "params": {
+        "gamepad": "int"
+      }
+    },
+    {
+      "name": "GetGamepadAxisMovement",
+      "description": "Get axis movement value for a gamepad axis",
+      "returnType": "float",
+      "params": {
+        "gamepad": "int",
+        "axis": "int"
+      }
+    },
+    {
+      "name": "SetGamepadMappings",
+      "description": "Set internal gamepad mappings (SDL_GameControllerDB)",
+      "returnType": "int",
+      "params": {
+        "mappings": "const char *"
+      }
+    },
+    {
+      "name": "IsMouseButtonPressed",
+      "description": "Check if a mouse button has been pressed once",
+      "returnType": "bool",
+      "params": {
+        "button": "int"
+      }
+    },
+    {
+      "name": "IsMouseButtonDown",
+      "description": "Check if a mouse button is being pressed",
+      "returnType": "bool",
+      "params": {
+        "button": "int"
+      }
+    },
+    {
+      "name": "IsMouseButtonReleased",
+      "description": "Check if a mouse button has been released once",
+      "returnType": "bool",
+      "params": {
+        "button": "int"
+      }
+    },
+    {
+      "name": "IsMouseButtonUp",
+      "description": "Check if a mouse button is NOT being pressed",
+      "returnType": "bool",
+      "params": {
+        "button": "int"
+      }
+    },
+    {
+      "name": "GetMouseX",
+      "description": "Get mouse position X",
+      "returnType": "int"
+    },
+    {
+      "name": "GetMouseY",
+      "description": "Get mouse position Y",
+      "returnType": "int"
+    },
+    {
+      "name": "GetMousePosition",
+      "description": "Get mouse position XY",
+      "returnType": "Vector2"
+    },
+    {
+      "name": "SetMousePosition",
+      "description": "Set mouse position XY",
+      "returnType": "void",
+      "params": {
+        "x": "int",
+        "y": "int"
+      }
+    },
+    {
+      "name": "SetMouseOffset",
+      "description": "Set mouse offset",
+      "returnType": "void",
+      "params": {
+        "offsetX": "int",
+        "offsetY": "int"
+      }
+    },
+    {
+      "name": "SetMouseScale",
+      "description": "Set mouse scaling",
+      "returnType": "void",
+      "params": {
+        "scaleX": "float",
+        "scaleY": "float"
+      }
+    },
+    {
+      "name": "GetMouseWheelMove",
+      "description": "Get mouse wheel movement Y",
+      "returnType": "float"
+    },
+    {
+      "name": "SetMouseCursor",
+      "description": "Set mouse cursor",
+      "returnType": "void",
+      "params": {
+        "cursor": "int"
+      }
+    },
+    {
+      "name": "GetTouchX",
+      "description": "Get touch position X for touch point 0 (relative to screen size)",
+      "returnType": "int"
+    },
+    {
+      "name": "GetTouchY",
+      "description": "Get touch position Y for touch point 0 (relative to screen size)",
+      "returnType": "int"
+    },
+    {
+      "name": "GetTouchPosition",
+      "description": "Get touch position XY for a touch point index (relative to screen size)",
+      "returnType": "Vector2",
+      "params": {
+        "index": "int"
+      }
+    },
+    {
+      "name": "SetGesturesEnabled",
+      "description": "Enable a set of gestures using flags",
+      "returnType": "void",
+      "params": {
+        "flags": "unsigned int"
+      }
+    },
+    {
+      "name": "IsGestureDetected",
+      "description": "Check if a gesture have been detected",
+      "returnType": "bool",
+      "params": {
+        "gesture": "int"
+      }
+    },
+    {
+      "name": "GetGestureDetected",
+      "description": "Get latest detected gesture",
+      "returnType": "int"
+    },
+    {
+      "name": "GetTouchPointsCount",
+      "description": "Get touch points count",
+      "returnType": "int"
+    },
+    {
+      "name": "GetGestureHoldDuration",
+      "description": "Get gesture hold time in milliseconds",
+      "returnType": "float"
+    },
+    {
+      "name": "GetGestureDragVector",
+      "description": "Get gesture drag vector",
+      "returnType": "Vector2"
+    },
+    {
+      "name": "GetGestureDragAngle",
+      "description": "Get gesture drag angle",
+      "returnType": "float"
+    },
+    {
+      "name": "GetGesturePinchVector",
+      "description": "Get gesture pinch delta",
+      "returnType": "Vector2"
+    },
+    {
+      "name": "GetGesturePinchAngle",
+      "description": "Get gesture pinch angle",
+      "returnType": "float"
+    },
+    {
+      "name": "SetCameraMode",
+      "description": "Set camera mode (multiple camera modes available)",
+      "returnType": "void",
+      "params": {
+        "camera": "Camera",
+        "mode": "int"
+      }
+    },
+    {
+      "name": "UpdateCamera",
+      "description": "Update camera position for selected mode",
+      "returnType": "void",
+      "params": {
+        "camera": "Camera *"
+      }
+    },
+    {
+      "name": "SetCameraPanControl",
+      "description": "Set camera pan key to combine with mouse movement (free camera)",
+      "returnType": "void",
+      "params": {
+        "keyPan": "int"
+      }
+    },
+    {
+      "name": "SetCameraAltControl",
+      "description": "Set camera alt key to combine with mouse movement (free camera)",
+      "returnType": "void",
+      "params": {
+        "keyAlt": "int"
+      }
+    },
+    {
+      "name": "SetCameraSmoothZoomControl",
+      "description": "Set camera smooth zoom key to combine with mouse (free camera)",
+      "returnType": "void",
+      "params": {
+        "keySmoothZoom": "int"
+      }
+    },
+    {
+      "name": "SetCameraMoveControls",
+      "description": "Set camera move controls (1st person and 3rd person cameras)",
+      "returnType": "void",
+      "params": {
+        "keyFront": "int",
+        "keyBack": "int",
+        "keyRight": "int",
+        "keyLeft": "int",
+        "keyUp": "int",
+        "keyDown": "int"
+      }
+    },
+    {
+      "name": "SetShapesTexture",
+      "description": "Set texture and rectangle to be used on shapes drawing",
+      "returnType": "void",
+      "params": {
+        "texture": "Texture2D",
+        "source": "Rectangle"
+      }
+    },
+    {
+      "name": "DrawPixel",
+      "description": "Draw a pixel",
+      "returnType": "void",
+      "params": {
+        "posX": "int",
+        "posY": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawPixelV",
+      "description": "Draw a pixel (Vector version)",
+      "returnType": "void",
+      "params": {
+        "position": "Vector2",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawLine",
+      "description": "Draw a line",
+      "returnType": "void",
+      "params": {
+        "startPosX": "int",
+        "startPosY": "int",
+        "endPosX": "int",
+        "endPosY": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawLineV",
+      "description": "Draw a line (Vector version)",
+      "returnType": "void",
+      "params": {
+        "startPos": "Vector2",
+        "endPos": "Vector2",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawLineEx",
+      "description": "Draw a line defining thickness",
+      "returnType": "void",
+      "params": {
+        "startPos": "Vector2",
+        "endPos": "Vector2",
+        "thick": "float",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawLineBezier",
+      "description": "Draw a line using cubic-bezier curves in-out",
+      "returnType": "void",
+      "params": {
+        "startPos": "Vector2",
+        "endPos": "Vector2",
+        "thick": "float",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawLineBezierQuad",
+      "description": "raw line using quadratic bezier curves with a control point",
+      "returnType": "void",
+      "params": {
+        "startPos": "Vector2",
+        "endPos": "Vector2",
+        "controlPos": "Vector2",
+        "thick": "float",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawLineStrip",
+      "description": "Draw lines sequence",
+      "returnType": "void",
+      "params": {
+        "points": "Vector2 *",
+        "pointsCount": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawCircle",
+      "description": "Draw a color-filled circle",
+      "returnType": "void",
+      "params": {
+        "centerX": "int",
+        "centerY": "int",
+        "radius": "float",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawCircleSector",
+      "description": "Draw a piece of a circle",
+      "returnType": "void",
+      "params": {
+        "center": "Vector2",
+        "radius": "float",
+        "startAngle": "float",
+        "endAngle": "float",
+        "segments": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawCircleSectorLines",
+      "description": "Draw circle sector outline",
+      "returnType": "void",
+      "params": {
+        "center": "Vector2",
+        "radius": "float",
+        "startAngle": "float",
+        "endAngle": "float",
+        "segments": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawCircleGradient",
+      "description": "Draw a gradient-filled circle",
+      "returnType": "void",
+      "params": {
+        "centerX": "int",
+        "centerY": "int",
+        "radius": "float",
+        "color1": "Color",
+        "color2": "Color"
+      }
+    },
+    {
+      "name": "DrawCircleV",
+      "description": "Draw a color-filled circle (Vector version)",
+      "returnType": "void",
+      "params": {
+        "center": "Vector2",
+        "radius": "float",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawCircleLines",
+      "description": "Draw circle outline",
+      "returnType": "void",
+      "params": {
+        "centerX": "int",
+        "centerY": "int",
+        "radius": "float",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawEllipse",
+      "description": "Draw ellipse",
+      "returnType": "void",
+      "params": {
+        "centerX": "int",
+        "centerY": "int",
+        "radiusH": "float",
+        "radiusV": "float",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawEllipseLines",
+      "description": "Draw ellipse outline",
+      "returnType": "void",
+      "params": {
+        "centerX": "int",
+        "centerY": "int",
+        "radiusH": "float",
+        "radiusV": "float",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawRing",
+      "description": "Draw ring",
+      "returnType": "void",
+      "params": {
+        "center": "Vector2",
+        "innerRadius": "float",
+        "outerRadius": "float",
+        "startAngle": "float",
+        "endAngle": "float",
+        "segments": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawRingLines",
+      "description": "Draw ring outline",
+      "returnType": "void",
+      "params": {
+        "center": "Vector2",
+        "innerRadius": "float",
+        "outerRadius": "float",
+        "startAngle": "float",
+        "endAngle": "float",
+        "segments": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawRectangle",
+      "description": "Draw a color-filled rectangle",
+      "returnType": "void",
+      "params": {
+        "posX": "int",
+        "posY": "int",
+        "width": "int",
+        "height": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawRectangleV",
+      "description": "Draw a color-filled rectangle (Vector version)",
+      "returnType": "void",
+      "params": {
+        "position": "Vector2",
+        "size": "Vector2",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawRectangleRec",
+      "description": "Draw a color-filled rectangle",
+      "returnType": "void",
+      "params": {
+        "rec": "Rectangle",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawRectanglePro",
+      "description": "Draw a color-filled rectangle with pro parameters",
+      "returnType": "void",
+      "params": {
+        "rec": "Rectangle",
+        "origin": "Vector2",
+        "rotation": "float",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawRectangleGradientV",
+      "description": "Draw a vertical-gradient-filled rectangle",
+      "returnType": "void",
+      "params": {
+        "posX": "int",
+        "posY": "int",
+        "width": "int",
+        "height": "int",
+        "color1": "Color",
+        "color2": "Color"
+      }
+    },
+    {
+      "name": "DrawRectangleGradientH",
+      "description": "Draw a horizontal-gradient-filled rectangle",
+      "returnType": "void",
+      "params": {
+        "posX": "int",
+        "posY": "int",
+        "width": "int",
+        "height": "int",
+        "color1": "Color",
+        "color2": "Color"
+      }
+    },
+    {
+      "name": "DrawRectangleGradientEx",
+      "description": "Draw a gradient-filled rectangle with custom vertex colors",
+      "returnType": "void",
+      "params": {
+        "rec": "Rectangle",
+        "col1": "Color",
+        "col2": "Color",
+        "col3": "Color",
+        "col4": "Color"
+      }
+    },
+    {
+      "name": "DrawRectangleLines",
+      "description": "Draw rectangle outline",
+      "returnType": "void",
+      "params": {
+        "posX": "int",
+        "posY": "int",
+        "width": "int",
+        "height": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawRectangleLinesEx",
+      "description": "Draw rectangle outline with extended parameters",
+      "returnType": "void",
+      "params": {
+        "rec": "Rectangle",
+        "lineThick": "float",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawRectangleRounded",
+      "description": "Draw rectangle with rounded edges",
+      "returnType": "void",
+      "params": {
+        "rec": "Rectangle",
+        "roundness": "float",
+        "segments": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawRectangleRoundedLines",
+      "description": "Draw rectangle with rounded edges outline",
+      "returnType": "void",
+      "params": {
+        "rec": "Rectangle",
+        "roundness": "float",
+        "segments": "int",
+        "lineThick": "float",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawTriangle",
+      "description": "Draw a color-filled triangle (vertex in counter-clockwise order!)",
+      "returnType": "void",
+      "params": {
+        "v1": "Vector2",
+        "v2": "Vector2",
+        "v3": "Vector2",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawTriangleLines",
+      "description": "Draw triangle outline (vertex in counter-clockwise order!)",
+      "returnType": "void",
+      "params": {
+        "v1": "Vector2",
+        "v2": "Vector2",
+        "v3": "Vector2",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawTriangleFan",
+      "description": "Draw a triangle fan defined by points (first vertex is the center)",
+      "returnType": "void",
+      "params": {
+        "points": "Vector2 *",
+        "pointsCount": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawTriangleStrip",
+      "description": "Draw a triangle strip defined by points",
+      "returnType": "void",
+      "params": {
+        "points": "Vector2 *",
+        "pointsCount": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawPoly",
+      "description": "Draw a regular polygon (Vector version)",
+      "returnType": "void",
+      "params": {
+        "center": "Vector2",
+        "sides": "int",
+        "radius": "float",
+        "rotation": "float",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawPolyLines",
+      "description": "Draw a polygon outline of n sides",
+      "returnType": "void",
+      "params": {
+        "center": "Vector2",
+        "sides": "int",
+        "radius": "float",
+        "rotation": "float",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawPolyLinesEx",
+      "description": "Draw a polygon outline of n sides with extended parameters",
+      "returnType": "void",
+      "params": {
+        "center": "Vector2",
+        "sides": "int",
+        "radius": "float",
+        "rotation": "float",
+        "lineThick": "float",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "CheckCollisionRecs",
+      "description": "Check collision between two rectangles",
+      "returnType": "bool",
+      "params": {
+        "rec1": "Rectangle",
+        "rec2": "Rectangle"
+      }
+    },
+    {
+      "name": "CheckCollisionCircles",
+      "description": "Check collision between two circles",
+      "returnType": "bool",
+      "params": {
+        "center1": "Vector2",
+        "radius1": "float",
+        "center2": "Vector2",
+        "radius2": "float"
+      }
+    },
+    {
+      "name": "CheckCollisionCircleRec",
+      "description": "Check collision between circle and rectangle",
+      "returnType": "bool",
+      "params": {
+        "center": "Vector2",
+        "radius": "float",
+        "rec": "Rectangle"
+      }
+    },
+    {
+      "name": "CheckCollisionPointRec",
+      "description": "Check if point is inside rectangle",
+      "returnType": "bool",
+      "params": {
+        "point": "Vector2",
+        "rec": "Rectangle"
+      }
+    },
+    {
+      "name": "CheckCollisionPointCircle",
+      "description": "Check if point is inside circle",
+      "returnType": "bool",
+      "params": {
+        "point": "Vector2",
+        "center": "Vector2",
+        "radius": "float"
+      }
+    },
+    {
+      "name": "CheckCollisionPointTriangle",
+      "description": "Check if point is inside a triangle",
+      "returnType": "bool",
+      "params": {
+        "point": "Vector2",
+        "p1": "Vector2",
+        "p2": "Vector2",
+        "p3": "Vector2"
+      }
+    },
+    {
+      "name": "CheckCollisionLines",
+      "description": "Check the collision between two lines defined by two points each, returns collision point by reference",
+      "returnType": "bool",
+      "params": {
+        "startPos1": "Vector2",
+        "endPos1": "Vector2",
+        "startPos2": "Vector2",
+        "endPos2": "Vector2",
+        "collisionPoint": "Vector2 *"
+      }
+    },
+    {
+      "name": "GetCollisionRec",
+      "description": "Get collision rectangle for two rectangles collision",
+      "returnType": "Rectangle",
+      "params": {
+        "rec1": "Rectangle",
+        "rec2": "Rectangle"
+      }
+    },
+    {
+      "name": "LoadImage",
+      "description": "Load image from file into CPU memory (RAM)",
+      "returnType": "Image",
+      "params": {
+        "fileName": "const char *"
+      }
+    },
+    {
+      "name": "LoadImageRaw",
+      "description": "Load image from RAW file data",
+      "returnType": "Image",
+      "params": {
+        "fileName": "const char *",
+        "width": "int",
+        "height": "int",
+        "format": "int",
+        "headerSize": "int"
+      }
+    },
+    {
+      "name": "LoadImageAnim",
+      "description": "Load image sequence from file (frames appended to image.data)",
+      "returnType": "Image",
+      "params": {
+        "fileName": "const char *",
+        "frames": "int *"
+      }
+    },
+    {
+      "name": "LoadImageFromMemory",
+      "description": "Load image from memory buffer, fileType refers to extension: i.e. '.png'",
+      "returnType": "Image",
+      "params": {
+        "fileType": "const char *",
+        "fileData": "const unsigned char *",
+        "dataSize": "int"
+      }
+    },
+    {
+      "name": "UnloadImage",
+      "description": "Unload image from CPU memory (RAM)",
+      "returnType": "void",
+      "params": {
+        "image": "Image"
+      }
+    },
+    {
+      "name": "ExportImage",
+      "description": "Export image data to file, returns true on success",
+      "returnType": "bool",
+      "params": {
+        "image": "Image",
+        "fileName": "const char *"
+      }
+    },
+    {
+      "name": "ExportImageAsCode",
+      "description": "Export image as code file defining an array of bytes, returns true on success",
+      "returnType": "bool",
+      "params": {
+        "image": "Image",
+        "fileName": "const char *"
+      }
+    },
+    {
+      "name": "GenImageColor",
+      "description": "Generate image: plain color",
+      "returnType": "Image",
+      "params": {
+        "width": "int",
+        "height": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "GenImageGradientV",
+      "description": "Generate image: vertical gradient",
+      "returnType": "Image",
+      "params": {
+        "width": "int",
+        "height": "int",
+        "top": "Color",
+        "bottom": "Color"
+      }
+    },
+    {
+      "name": "GenImageGradientH",
+      "description": "Generate image: horizontal gradient",
+      "returnType": "Image",
+      "params": {
+        "width": "int",
+        "height": "int",
+        "left": "Color",
+        "right": "Color"
+      }
+    },
+    {
+      "name": "GenImageGradientRadial",
+      "description": "Generate image: radial gradient",
+      "returnType": "Image",
+      "params": {
+        "width": "int",
+        "height": "int",
+        "density": "float",
+        "inner": "Color",
+        "outer": "Color"
+      }
+    },
+    {
+      "name": "GenImageChecked",
+      "description": "Generate image: checked",
+      "returnType": "Image",
+      "params": {
+        "width": "int",
+        "height": "int",
+        "checksX": "int",
+        "checksY": "int",
+        "col1": "Color",
+        "col2": "Color"
+      }
+    },
+    {
+      "name": "GenImageWhiteNoise",
+      "description": "Generate image: white noise",
+      "returnType": "Image",
+      "params": {
+        "width": "int",
+        "height": "int",
+        "factor": "float"
+      }
+    },
+    {
+      "name": "GenImagePerlinNoise",
+      "description": "Generate image: perlin noise",
+      "returnType": "Image",
+      "params": {
+        "width": "int",
+        "height": "int",
+        "offsetX": "int",
+        "offsetY": "int",
+        "scale": "float"
+      }
+    },
+    {
+      "name": "GenImageCellular",
+      "description": "Generate image: cellular algorithm. Bigger tileSize means bigger cells",
+      "returnType": "Image",
+      "params": {
+        "width": "int",
+        "height": "int",
+        "tileSize": "int"
+      }
+    },
+    {
+      "name": "ImageCopy",
+      "description": "Create an image duplicate (useful for transformations)",
+      "returnType": "Image",
+      "params": {
+        "image": "Image"
+      }
+    },
+    {
+      "name": "ImageFromImage",
+      "description": "Create an image from another image piece",
+      "returnType": "Image",
+      "params": {
+        "image": "Image",
+        "rec": "Rectangle"
+      }
+    },
+    {
+      "name": "ImageText",
+      "description": "Create an image from text (default font)",
+      "returnType": "Image",
+      "params": {
+        "text": "const char *",
+        "fontSize": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "ImageTextEx",
+      "description": "Create an image from text (custom sprite font)",
+      "returnType": "Image",
+      "params": {
+        "font": "Font",
+        "text": "const char *",
+        "fontSize": "float",
+        "spacing": "float",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "ImageFormat",
+      "description": "Convert image data to desired format",
+      "returnType": "void",
+      "params": {
+        "image": "Image *",
+        "newFormat": "int"
+      }
+    },
+    {
+      "name": "ImageToPOT",
+      "description": "Convert image to POT (power-of-two)",
+      "returnType": "void",
+      "params": {
+        "image": "Image *",
+        "fill": "Color"
+      }
+    },
+    {
+      "name": "ImageCrop",
+      "description": "Crop an image to a defined rectangle",
+      "returnType": "void",
+      "params": {
+        "image": "Image *",
+        "crop": "Rectangle"
+      }
+    },
+    {
+      "name": "ImageAlphaCrop",
+      "description": "Crop image depending on alpha value",
+      "returnType": "void",
+      "params": {
+        "image": "Image *",
+        "threshold": "float"
+      }
+    },
+    {
+      "name": "ImageAlphaClear",
+      "description": "Clear alpha channel to desired color",
+      "returnType": "void",
+      "params": {
+        "image": "Image *",
+        "color": "Color",
+        "threshold": "float"
+      }
+    },
+    {
+      "name": "ImageAlphaMask",
+      "description": "Apply alpha mask to image",
+      "returnType": "void",
+      "params": {
+        "image": "Image *",
+        "alphaMask": "Image"
+      }
+    },
+    {
+      "name": "ImageAlphaPremultiply",
+      "description": "Premultiply alpha channel",
+      "returnType": "void",
+      "params": {
+        "image": "Image *"
+      }
+    },
+    {
+      "name": "ImageResize",
+      "description": "Resize image (Bicubic scaling algorithm)",
+      "returnType": "void",
+      "params": {
+        "image": "Image *",
+        "newWidth": "int",
+        "newHeight": "int"
+      }
+    },
+    {
+      "name": "ImageResizeNN",
+      "description": "Resize image (Nearest-Neighbor scaling algorithm)",
+      "returnType": "void",
+      "params": {
+        "image": "Image *",
+        "newWidth": "int",
+        "newHeight": "int"
+      }
+    },
+    {
+      "name": "ImageResizeCanvas",
+      "description": "Resize canvas and fill with color",
+      "returnType": "void",
+      "params": {
+        "image": "Image *",
+        "newWidth": "int",
+        "newHeight": "int",
+        "offsetX": "int",
+        "offsetY": "int",
+        "fill": "Color"
+      }
+    },
+    {
+      "name": "ImageMipmaps",
+      "description": "Compute all mipmap levels for a provided image",
+      "returnType": "void",
+      "params": {
+        "image": "Image *"
+      }
+    },
+    {
+      "name": "ImageDither",
+      "description": "Dither image data to 16bpp or lower (Floyd-Steinberg dithering)",
+      "returnType": "void",
+      "params": {
+        "image": "Image *",
+        "rBpp": "int",
+        "gBpp": "int",
+        "bBpp": "int",
+        "aBpp": "int"
+      }
+    },
+    {
+      "name": "ImageFlipVertical",
+      "description": "Flip image vertically",
+      "returnType": "void",
+      "params": {
+        "image": "Image *"
+      }
+    },
+    {
+      "name": "ImageFlipHorizontal",
+      "description": "Flip image horizontally",
+      "returnType": "void",
+      "params": {
+        "image": "Image *"
+      }
+    },
+    {
+      "name": "ImageRotateCW",
+      "description": "Rotate image clockwise 90deg",
+      "returnType": "void",
+      "params": {
+        "image": "Image *"
+      }
+    },
+    {
+      "name": "ImageRotateCCW",
+      "description": "Rotate image counter-clockwise 90deg",
+      "returnType": "void",
+      "params": {
+        "image": "Image *"
+      }
+    },
+    {
+      "name": "ImageColorTint",
+      "description": "Modify image color: tint",
+      "returnType": "void",
+      "params": {
+        "image": "Image *",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "ImageColorInvert",
+      "description": "Modify image color: invert",
+      "returnType": "void",
+      "params": {
+        "image": "Image *"
+      }
+    },
+    {
+      "name": "ImageColorGrayscale",
+      "description": "Modify image color: grayscale",
+      "returnType": "void",
+      "params": {
+        "image": "Image *"
+      }
+    },
+    {
+      "name": "ImageColorContrast",
+      "description": "Modify image color: contrast (-100 to 100)",
+      "returnType": "void",
+      "params": {
+        "image": "Image *",
+        "contrast": "float"
+      }
+    },
+    {
+      "name": "ImageColorBrightness",
+      "description": "Modify image color: brightness (-255 to 255)",
+      "returnType": "void",
+      "params": {
+        "image": "Image *",
+        "brightness": "int"
+      }
+    },
+    {
+      "name": "ImageColorReplace",
+      "description": "Modify image color: replace color",
+      "returnType": "void",
+      "params": {
+        "image": "Image *",
+        "color": "Color",
+        "replace": "Color"
+      }
+    },
+    {
+      "name": "LoadImageColors",
+      "description": "Load color data from image as a Color array (RGBA - 32bit)",
+      "returnType": "Color *",
+      "params": {
+        "image": "Image"
+      }
+    },
+    {
+      "name": "LoadImagePalette",
+      "description": "Load colors palette from image as a Color array (RGBA - 32bit)",
+      "returnType": "Color *",
+      "params": {
+        "image": "Image",
+        "maxPaletteSize": "int",
+        "colorsCount": "int *"
+      }
+    },
+    {
+      "name": "UnloadImageColors",
+      "description": "Unload color data loaded with LoadImageColors()",
+      "returnType": "void",
+      "params": {
+        "colors": "Color *"
+      }
+    },
+    {
+      "name": "UnloadImagePalette",
+      "description": "Unload colors palette loaded with LoadImagePalette()",
+      "returnType": "void",
+      "params": {
+        "colors": "Color *"
+      }
+    },
+    {
+      "name": "GetImageAlphaBorder",
+      "description": "Get image alpha border rectangle",
+      "returnType": "Rectangle",
+      "params": {
+        "image": "Image",
+        "threshold": "float"
+      }
+    },
+    {
+      "name": "ImageClearBackground",
+      "description": "Clear image background with given color",
+      "returnType": "void",
+      "params": {
+        "dst": "Image *",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "ImageDrawPixel",
+      "description": "Draw pixel within an image",
+      "returnType": "void",
+      "params": {
+        "dst": "Image *",
+        "posX": "int",
+        "posY": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "ImageDrawPixelV",
+      "description": "Draw pixel within an image (Vector version)",
+      "returnType": "void",
+      "params": {
+        "dst": "Image *",
+        "position": "Vector2",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "ImageDrawLine",
+      "description": "Draw line within an image",
+      "returnType": "void",
+      "params": {
+        "dst": "Image *",
+        "startPosX": "int",
+        "startPosY": "int",
+        "endPosX": "int",
+        "endPosY": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "ImageDrawLineV",
+      "description": "Draw line within an image (Vector version)",
+      "returnType": "void",
+      "params": {
+        "dst": "Image *",
+        "start": "Vector2",
+        "end": "Vector2",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "ImageDrawCircle",
+      "description": "Draw circle within an image",
+      "returnType": "void",
+      "params": {
+        "dst": "Image *",
+        "centerX": "int",
+        "centerY": "int",
+        "radius": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "ImageDrawCircleV",
+      "description": "Draw circle within an image (Vector version)",
+      "returnType": "void",
+      "params": {
+        "dst": "Image *",
+        "center": "Vector2",
+        "radius": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "ImageDrawRectangle",
+      "description": "Draw rectangle within an image",
+      "returnType": "void",
+      "params": {
+        "dst": "Image *",
+        "posX": "int",
+        "posY": "int",
+        "width": "int",
+        "height": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "ImageDrawRectangleV",
+      "description": "Draw rectangle within an image (Vector version)",
+      "returnType": "void",
+      "params": {
+        "dst": "Image *",
+        "position": "Vector2",
+        "size": "Vector2",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "ImageDrawRectangleRec",
+      "description": "Draw rectangle within an image",
+      "returnType": "void",
+      "params": {
+        "dst": "Image *",
+        "rec": "Rectangle",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "ImageDrawRectangleLines",
+      "description": "Draw rectangle lines within an image",
+      "returnType": "void",
+      "params": {
+        "dst": "Image *",
+        "rec": "Rectangle",
+        "thick": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "ImageDraw",
+      "description": "Draw a source image within a destination image (tint applied to source)",
+      "returnType": "void",
+      "params": {
+        "dst": "Image *",
+        "src": "Image",
+        "srcRec": "Rectangle",
+        "dstRec": "Rectangle",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "ImageDrawText",
+      "description": "Draw text (using default font) within an image (destination)",
+      "returnType": "void",
+      "params": {
+        "dst": "Image *",
+        "text": "const char *",
+        "posX": "int",
+        "posY": "int",
+        "fontSize": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "ImageDrawTextEx",
+      "description": "Draw text (custom sprite font) within an image (destination)",
+      "returnType": "void",
+      "params": {
+        "dst": "Image *",
+        "font": "Font",
+        "text": "const char *",
+        "position": "Vector2",
+        "fontSize": "float",
+        "spacing": "float",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "LoadTexture",
+      "description": "Load texture from file into GPU memory (VRAM)",
+      "returnType": "Texture2D",
+      "params": {
+        "fileName": "const char *"
+      }
+    },
+    {
+      "name": "LoadTextureFromImage",
+      "description": "Load texture from image data",
+      "returnType": "Texture2D",
+      "params": {
+        "image": "Image"
+      }
+    },
+    {
+      "name": "LoadTextureCubemap",
+      "description": "Load cubemap from image, multiple image cubemap layouts supported",
+      "returnType": "TextureCubemap",
+      "params": {
+        "image": "Image",
+        "layout": "int"
+      }
+    },
+    {
+      "name": "LoadRenderTexture",
+      "description": "Load texture for rendering (framebuffer)",
+      "returnType": "RenderTexture2D",
+      "params": {
+        "width": "int",
+        "height": "int"
+      }
+    },
+    {
+      "name": "UnloadTexture",
+      "description": "Unload texture from GPU memory (VRAM)",
+      "returnType": "void",
+      "params": {
+        "texture": "Texture2D"
+      }
+    },
+    {
+      "name": "UnloadRenderTexture",
+      "description": "Unload render texture from GPU memory (VRAM)",
+      "returnType": "void",
+      "params": {
+        "target": "RenderTexture2D"
+      }
+    },
+    {
+      "name": "UpdateTexture",
+      "description": "Update GPU texture with new data",
+      "returnType": "void",
+      "params": {
+        "texture": "Texture2D",
+        "pixels": "const void *"
+      }
+    },
+    {
+      "name": "UpdateTextureRec",
+      "description": "Update GPU texture rectangle with new data",
+      "returnType": "void",
+      "params": {
+        "texture": "Texture2D",
+        "rec": "Rectangle",
+        "pixels": "const void *"
+      }
+    },
+    {
+      "name": "GetTextureData",
+      "description": "Get pixel data from GPU texture and return an Image",
+      "returnType": "Image",
+      "params": {
+        "texture": "Texture2D"
+      }
+    },
+    {
+      "name": "GetScreenData",
+      "description": "Get pixel data from screen buffer and return an Image (screenshot)",
+      "returnType": "Image"
+    },
+    {
+      "name": "GenTextureMipmaps",
+      "description": "Generate GPU mipmaps for a texture",
+      "returnType": "void",
+      "params": {
+        "texture": "Texture2D *"
+      }
+    },
+    {
+      "name": "SetTextureFilter",
+      "description": "Set texture scaling filter mode",
+      "returnType": "void",
+      "params": {
+        "texture": "Texture2D",
+        "filter": "int"
+      }
+    },
+    {
+      "name": "SetTextureWrap",
+      "description": "Set texture wrapping mode",
+      "returnType": "void",
+      "params": {
+        "texture": "Texture2D",
+        "wrap": "int"
+      }
+    },
+    {
+      "name": "DrawTexture",
+      "description": "Draw a Texture2D",
+      "returnType": "void",
+      "params": {
+        "texture": "Texture2D",
+        "posX": "int",
+        "posY": "int",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "DrawTextureV",
+      "description": "Draw a Texture2D with position defined as Vector2",
+      "returnType": "void",
+      "params": {
+        "texture": "Texture2D",
+        "position": "Vector2",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "DrawTextureEx",
+      "description": "Draw a Texture2D with extended parameters",
+      "returnType": "void",
+      "params": {
+        "texture": "Texture2D",
+        "position": "Vector2",
+        "rotation": "float",
+        "scale": "float",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "DrawTextureRec",
+      "description": "Draw a part of a texture defined by a rectangle",
+      "returnType": "void",
+      "params": {
+        "texture": "Texture2D",
+        "source": "Rectangle",
+        "position": "Vector2",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "DrawTextureQuad",
+      "description": "Draw texture quad with tiling and offset parameters",
+      "returnType": "void",
+      "params": {
+        "texture": "Texture2D",
+        "tiling": "Vector2",
+        "offset": "Vector2",
+        "quad": "Rectangle",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "DrawTextureTiled",
+      "description": "Draw part of a texture (defined by a rectangle) with rotation and scale tiled into dest.",
+      "returnType": "void",
+      "params": {
+        "texture": "Texture2D",
+        "source": "Rectangle",
+        "dest": "Rectangle",
+        "origin": "Vector2",
+        "rotation": "float",
+        "scale": "float",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "DrawTexturePro",
+      "description": "Draw a part of a texture defined by a rectangle with 'pro' parameters",
+      "returnType": "void",
+      "params": {
+        "texture": "Texture2D",
+        "source": "Rectangle",
+        "dest": "Rectangle",
+        "origin": "Vector2",
+        "rotation": "float",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "DrawTextureNPatch",
+      "description": "Draws a texture (or part of it) that stretches or shrinks nicely",
+      "returnType": "void",
+      "params": {
+        "texture": "Texture2D",
+        "nPatchInfo": "NPatchInfo",
+        "dest": "Rectangle",
+        "origin": "Vector2",
+        "rotation": "float",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "DrawTexturePoly",
+      "description": "Draw a textured polygon",
+      "returnType": "void",
+      "params": {
+        "texture": "Texture2D",
+        "center": "Vector2",
+        "points": "Vector2 *",
+        "texcoords": "Vector2 *",
+        "pointsCount": "int",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "Fade",
+      "description": "Get color with alpha applied, alpha goes from 0.0f to 1.0f",
+      "returnType": "Color",
+      "params": {
+        "color": "Color",
+        "alpha": "float"
+      }
+    },
+    {
+      "name": "ColorToInt",
+      "description": "Get hexadecimal value for a Color",
+      "returnType": "int",
+      "params": {
+        "color": "Color"
+      }
+    },
+    {
+      "name": "ColorNormalize",
+      "description": "Get Color normalized as float [0..1]",
+      "returnType": "Vector4",
+      "params": {
+        "color": "Color"
+      }
+    },
+    {
+      "name": "ColorFromNormalized",
+      "description": "Get Color from normalized values [0..1]",
+      "returnType": "Color",
+      "params": {
+        "normalized": "Vector4"
+      }
+    },
+    {
+      "name": "ColorToHSV",
+      "description": "Get HSV values for a Color, hue [0..360], saturation/value [0..1]",
+      "returnType": "Vector3",
+      "params": {
+        "color": "Color"
+      }
+    },
+    {
+      "name": "ColorFromHSV",
+      "description": "Get a Color from HSV values, hue [0..360], saturation/value [0..1]",
+      "returnType": "Color",
+      "params": {
+        "hue": "float",
+        "saturation": "float",
+        "value": "float"
+      }
+    },
+    {
+      "name": "ColorAlpha",
+      "description": "Get color with alpha applied, alpha goes from 0.0f to 1.0f",
+      "returnType": "Color",
+      "params": {
+        "color": "Color",
+        "alpha": "float"
+      }
+    },
+    {
+      "name": "ColorAlphaBlend",
+      "description": "Get src alpha-blended into dst color with tint",
+      "returnType": "Color",
+      "params": {
+        "dst": "Color",
+        "src": "Color",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "GetColor",
+      "description": "Get Color structure from hexadecimal value",
+      "returnType": "Color",
+      "params": {
+        "hexValue": "int"
+      }
+    },
+    {
+      "name": "GetPixelColor",
+      "description": "Get Color from a source pixel pointer of certain format",
+      "returnType": "Color",
+      "params": {
+        "srcPtr": "void *",
+        "format": "int"
+      }
+    },
+    {
+      "name": "SetPixelColor",
+      "description": "Set color formatted into destination pixel pointer",
+      "returnType": "void",
+      "params": {
+        "dstPtr": "void *",
+        "color": "Color",
+        "format": "int"
+      }
+    },
+    {
+      "name": "GetPixelDataSize",
+      "description": "Get pixel data size in bytes for certain format",
+      "returnType": "int",
+      "params": {
+        "width": "int",
+        "height": "int",
+        "format": "int"
+      }
+    },
+    {
+      "name": "GetFontDefault",
+      "description": "Get the default Font",
+      "returnType": "Font"
+    },
+    {
+      "name": "LoadFont",
+      "description": "Load font from file into GPU memory (VRAM)",
+      "returnType": "Font",
+      "params": {
+        "fileName": "const char *"
+      }
+    },
+    {
+      "name": "LoadFontEx",
+      "description": "Load font from file with extended parameters",
+      "returnType": "Font",
+      "params": {
+        "fileName": "const char *",
+        "fontSize": "int",
+        "fontChars": "int *",
+        "charsCount": "int"
+      }
+    },
+    {
+      "name": "LoadFontFromImage",
+      "description": "Load font from Image (XNA style)",
+      "returnType": "Font",
+      "params": {
+        "image": "Image",
+        "key": "Color",
+        "firstChar": "int"
+      }
+    },
+    {
+      "name": "LoadFontFromMemory",
+      "description": "Load font from memory buffer, fileType refers to extension: i.e. '.ttf'",
+      "returnType": "Font",
+      "params": {
+        "fileType": "const char *",
+        "fileData": "const unsigned char *",
+        "dataSize": "int",
+        "fontSize": "int",
+        "fontChars": "int *",
+        "charsCount": "int"
+      }
+    },
+    {
+      "name": "LoadFontData",
+      "description": "Load font data for further use",
+      "returnType": "CharInfo *",
+      "params": {
+        "fileData": "const unsigned char *",
+        "dataSize": "int",
+        "fontSize": "int",
+        "fontChars": "int *",
+        "charsCount": "int",
+        "type": "int"
+      }
+    },
+    {
+      "name": "GenImageFontAtlas",
+      "description": "Generate image font atlas using chars info",
+      "returnType": "Image",
+      "params": {
+        "chars": "const CharInfo *",
+        "recs": "Rectangle **",
+        "charsCount": "int",
+        "fontSize": "int",
+        "padding": "int",
+        "packMethod": "int"
+      }
+    },
+    {
+      "name": "UnloadFontData",
+      "description": "Unload font chars info data (RAM)",
+      "returnType": "void",
+      "params": {
+        "chars": "CharInfo *",
+        "charsCount": "int"
+      }
+    },
+    {
+      "name": "UnloadFont",
+      "description": "Unload Font from GPU memory (VRAM)",
+      "returnType": "void",
+      "params": {
+        "font": "Font"
+      }
+    },
+    {
+      "name": "DrawFPS",
+      "description": "Draw current FPS",
+      "returnType": "void",
+      "params": {
+        "posX": "int",
+        "posY": "int"
+      }
+    },
+    {
+      "name": "DrawText",
+      "description": "Draw text (using default font)",
+      "returnType": "void",
+      "params": {
+        "text": "const char *",
+        "posX": "int",
+        "posY": "int",
+        "fontSize": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawTextEx",
+      "description": "Draw text using font and additional parameters",
+      "returnType": "void",
+      "params": {
+        "font": "Font",
+        "text": "const char *",
+        "position": "Vector2",
+        "fontSize": "float",
+        "spacing": "float",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "DrawTextRec",
+      "description": "Draw text using font inside rectangle limits",
+      "returnType": "void",
+      "params": {
+        "font": "Font",
+        "text": "const char *",
+        "rec": "Rectangle",
+        "fontSize": "float",
+        "spacing": "float",
+        "wordWrap": "bool",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "DrawTextRecEx",
+      "description": "Draw text using font inside rectangle limits with support for text selection",
+      "returnType": "void",
+      "params": {
+        "font": "Font",
+        "text": "const char *",
+        "rec": "Rectangle",
+        "fontSize": "float",
+        "spacing": "float",
+        "wordWrap": "bool",
+        "tint": "Color",
+        "selectStart": "int",
+        "selectLength": "int",
+        "selectTint": "Color",
+        "selectBackTint": "Color"
+      }
+    },
+    {
+      "name": "DrawTextCodepoint",
+      "description": "Draw one character (codepoint)",
+      "returnType": "void",
+      "params": {
+        "font": "Font",
+        "codepoint": "int",
+        "position": "Vector2",
+        "fontSize": "float",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "MeasureText",
+      "description": "Measure string width for default font",
+      "returnType": "int",
+      "params": {
+        "text": "const char *",
+        "fontSize": "int"
+      }
+    },
+    {
+      "name": "MeasureTextEx",
+      "description": "Measure string size for Font",
+      "returnType": "Vector2",
+      "params": {
+        "font": "Font",
+        "text": "const char *",
+        "fontSize": "float",
+        "spacing": "float"
+      }
+    },
+    {
+      "name": "GetGlyphIndex",
+      "description": "Get index position for a unicode character on font",
+      "returnType": "int",
+      "params": {
+        "font": "Font",
+        "codepoint": "int"
+      }
+    },
+    {
+      "name": "TextCopy",
+      "description": "Copy one string to another, returns bytes copied",
+      "returnType": "int",
+      "params": {
+        "dst": "char *",
+        "src": "const char *"
+      }
+    },
+    {
+      "name": "TextIsEqual",
+      "description": "Check if two text string are equal",
+      "returnType": "bool",
+      "params": {
+        "text1": "const char *",
+        "text2": "const char *"
+      }
+    },
+    {
+      "name": "TextLength",
+      "description": "Get text length, checks for ' 0' ending",
+      "returnType": "unsigned int",
+      "params": {
+        "text": "const char *"
+      }
+    },
+    {
+      "name": "TextFormat",
+      "description": "Text formatting with variables (sprintf style)",
+      "returnType": "const char *",
+      "params": {
+        "text": "const char *",
+        "": ""
+      }
+    },
+    {
+      "name": "TextSubtext",
+      "description": "Get a piece of a text string",
+      "returnType": "const char *",
+      "params": {
+        "text": "const char *",
+        "position": "int",
+        "length": "int"
+      }
+    },
+    {
+      "name": "TextReplace",
+      "description": "Replace text string (memory must be freed!)",
+      "returnType": "char *",
+      "params": {
+        "text": "char *",
+        "replace": "const char *",
+        "by": "const char *"
+      }
+    },
+    {
+      "name": "TextInsert",
+      "description": "Insert text in a position (memory must be freed!)",
+      "returnType": "char *",
+      "params": {
+        "text": "const char *",
+        "insert": "const char *",
+        "position": "int"
+      }
+    },
+    {
+      "name": "TextJoin",
+      "description": "Join text strings with delimiter",
+      "returnType": "const char *",
+      "params": {
+        "textList": "const char **",
+        "count": "int",
+        "delimiter": "const char *"
+      }
+    },
+    {
+      "name": "TextSplit",
+      "description": "Split text into multiple strings",
+      "returnType": "const char **",
+      "params": {
+        "text": "const char *",
+        "delimiter": "char",
+        "count": "int *"
+      }
+    },
+    {
+      "name": "TextAppend",
+      "description": "Append text at specific position and move cursor!",
+      "returnType": "void",
+      "params": {
+        "text": "char *",
+        "append": "const char *",
+        "position": "int *"
+      }
+    },
+    {
+      "name": "TextFindIndex",
+      "description": "Find first text occurrence within a string",
+      "returnType": "int",
+      "params": {
+        "text": "const char *",
+        "find": "const char *"
+      }
+    },
+    {
+      "name": "TextToUpper",
+      "description": "Get upper case version of provided string",
+      "returnType": "const char *",
+      "params": {
+        "text": "const char *"
+      }
+    },
+    {
+      "name": "TextToLower",
+      "description": "Get lower case version of provided string",
+      "returnType": "const char *",
+      "params": {
+        "text": "const char *"
+      }
+    },
+    {
+      "name": "TextToPascal",
+      "description": "Get Pascal case notation version of provided string",
+      "returnType": "const char *",
+      "params": {
+        "text": "const char *"
+      }
+    },
+    {
+      "name": "TextToInteger",
+      "description": "Get integer value from text (negative values not supported)",
+      "returnType": "int",
+      "params": {
+        "text": "const char *"
+      }
+    },
+    {
+      "name": "TextToUtf8",
+      "description": "Encode text codepoint into utf8 text (memory must be freed!)",
+      "returnType": "char *",
+      "params": {
+        "codepoints": "int *",
+        "length": "int"
+      }
+    },
+    {
+      "name": "GetCodepoints",
+      "description": "Get all codepoints in a string, codepoints count returned by parameters",
+      "returnType": "int *",
+      "params": {
+        "text": "const char *",
+        "count": "int *"
+      }
+    },
+    {
+      "name": "GetCodepointsCount",
+      "description": "Get total number of characters (codepoints) in a UTF8 encoded string",
+      "returnType": "int",
+      "params": {
+        "text": "const char *"
+      }
+    },
+    {
+      "name": "GetNextCodepoint",
+      "description": "Get next codepoint in a UTF8 encoded string; 0x3f('?') is returned on failure",
+      "returnType": "int",
+      "params": {
+        "text": "const char *",
+        "bytesProcessed": "int *"
+      }
+    },
+    {
+      "name": "CodepointToUtf8",
+      "description": "Encode codepoint into utf8 text (char array length returned as parameter)",
+      "returnType": "const char *",
+      "params": {
+        "codepoint": "int",
+        "byteLength": "int *"
+      }
+    },
+    {
+      "name": "DrawLine3D",
+      "description": "Draw a line in 3D world space",
+      "returnType": "void",
+      "params": {
+        "startPos": "Vector3",
+        "endPos": "Vector3",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawPoint3D",
+      "description": "Draw a point in 3D space, actually a small line",
+      "returnType": "void",
+      "params": {
+        "position": "Vector3",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawCircle3D",
+      "description": "Draw a circle in 3D world space",
+      "returnType": "void",
+      "params": {
+        "center": "Vector3",
+        "radius": "float",
+        "rotationAxis": "Vector3",
+        "rotationAngle": "float",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawTriangle3D",
+      "description": "Draw a color-filled triangle (vertex in counter-clockwise order!)",
+      "returnType": "void",
+      "params": {
+        "v1": "Vector3",
+        "v2": "Vector3",
+        "v3": "Vector3",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawTriangleStrip3D",
+      "description": "Draw a triangle strip defined by points",
+      "returnType": "void",
+      "params": {
+        "points": "Vector3 *",
+        "pointsCount": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawCube",
+      "description": "Draw cube",
+      "returnType": "void",
+      "params": {
+        "position": "Vector3",
+        "width": "float",
+        "height": "float",
+        "length": "float",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawCubeV",
+      "description": "Draw cube (Vector version)",
+      "returnType": "void",
+      "params": {
+        "position": "Vector3",
+        "size": "Vector3",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawCubeWires",
+      "description": "Draw cube wires",
+      "returnType": "void",
+      "params": {
+        "position": "Vector3",
+        "width": "float",
+        "height": "float",
+        "length": "float",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawCubeWiresV",
+      "description": "Draw cube wires (Vector version)",
+      "returnType": "void",
+      "params": {
+        "position": "Vector3",
+        "size": "Vector3",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawCubeTexture",
+      "description": "Draw cube textured",
+      "returnType": "void",
+      "params": {
+        "texture": "Texture2D",
+        "position": "Vector3",
+        "width": "float",
+        "height": "float",
+        "length": "float",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawSphere",
+      "description": "Draw sphere",
+      "returnType": "void",
+      "params": {
+        "centerPos": "Vector3",
+        "radius": "float",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawSphereEx",
+      "description": "Draw sphere with extended parameters",
+      "returnType": "void",
+      "params": {
+        "centerPos": "Vector3",
+        "radius": "float",
+        "rings": "int",
+        "slices": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawSphereWires",
+      "description": "Draw sphere wires",
+      "returnType": "void",
+      "params": {
+        "centerPos": "Vector3",
+        "radius": "float",
+        "rings": "int",
+        "slices": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawCylinder",
+      "description": "Draw a cylinder/cone",
+      "returnType": "void",
+      "params": {
+        "position": "Vector3",
+        "radiusTop": "float",
+        "radiusBottom": "float",
+        "height": "float",
+        "slices": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawCylinderWires",
+      "description": "Draw a cylinder/cone wires",
+      "returnType": "void",
+      "params": {
+        "position": "Vector3",
+        "radiusTop": "float",
+        "radiusBottom": "float",
+        "height": "float",
+        "slices": "int",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawPlane",
+      "description": "Draw a plane XZ",
+      "returnType": "void",
+      "params": {
+        "centerPos": "Vector3",
+        "size": "Vector2",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawRay",
+      "description": "Draw a ray line",
+      "returnType": "void",
+      "params": {
+        "ray": "Ray",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawGrid",
+      "description": "Draw a grid (centered at (0, 0, 0))",
+      "returnType": "void",
+      "params": {
+        "slices": "int",
+        "spacing": "float"
+      }
+    },
+    {
+      "name": "LoadModel",
+      "description": "Load model from files (meshes and materials)",
+      "returnType": "Model",
+      "params": {
+        "fileName": "const char *"
+      }
+    },
+    {
+      "name": "LoadModelFromMesh",
+      "description": "Load model from generated mesh (default material)",
+      "returnType": "Model",
+      "params": {
+        "mesh": "Mesh"
+      }
+    },
+    {
+      "name": "UnloadModel",
+      "description": "Unload model (including meshes) from memory (RAM and/or VRAM)",
+      "returnType": "void",
+      "params": {
+        "model": "Model"
+      }
+    },
+    {
+      "name": "UnloadModelKeepMeshes",
+      "description": "Unload model (but not meshes) from memory (RAM and/or VRAM)",
+      "returnType": "void",
+      "params": {
+        "model": "Model"
+      }
+    },
+    {
+      "name": "UploadMesh",
+      "description": "Upload mesh vertex data in GPU and provide VAO/VBO ids",
+      "returnType": "void",
+      "params": {
+        "mesh": "Mesh *",
+        "dynamic": "bool"
+      }
+    },
+    {
+      "name": "UpdateMeshBuffer",
+      "description": "Update mesh vertex data in GPU for a specific buffer index",
+      "returnType": "void",
+      "params": {
+        "mesh": "Mesh",
+        "index": "int",
+        "data": "void *",
+        "dataSize": "int",
+        "offset": "int"
+      }
+    },
+    {
+      "name": "DrawMesh",
+      "description": "Draw a 3d mesh with material and transform",
+      "returnType": "void",
+      "params": {
+        "mesh": "Mesh",
+        "material": "Material",
+        "transform": "Matrix"
+      }
+    },
+    {
+      "name": "DrawMeshInstanced",
+      "description": "Draw multiple mesh instances with material and different transforms",
+      "returnType": "void",
+      "params": {
+        "mesh": "Mesh",
+        "material": "Material",
+        "transforms": "Matrix *",
+        "instances": "int"
+      }
+    },
+    {
+      "name": "UnloadMesh",
+      "description": "Unload mesh data from CPU and GPU",
+      "returnType": "void",
+      "params": {
+        "mesh": "Mesh"
+      }
+    },
+    {
+      "name": "ExportMesh",
+      "description": "Export mesh data to file, returns true on success",
+      "returnType": "bool",
+      "params": {
+        "mesh": "Mesh",
+        "fileName": "const char *"
+      }
+    },
+    {
+      "name": "LoadMaterials",
+      "description": "Load materials from model file",
+      "returnType": "Material *",
+      "params": {
+        "fileName": "const char *",
+        "materialCount": "int *"
+      }
+    },
+    {
+      "name": "LoadMaterialDefault",
+      "description": "Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps)",
+      "returnType": "Material"
+    },
+    {
+      "name": "UnloadMaterial",
+      "description": "Unload material from GPU memory (VRAM)",
+      "returnType": "void",
+      "params": {
+        "material": "Material"
+      }
+    },
+    {
+      "name": "SetMaterialTexture",
+      "description": "Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR...)",
+      "returnType": "void",
+      "params": {
+        "material": "Material *",
+        "mapType": "int",
+        "texture": "Texture2D"
+      }
+    },
+    {
+      "name": "SetModelMeshMaterial",
+      "description": "Set material for a mesh",
+      "returnType": "void",
+      "params": {
+        "model": "Model *",
+        "meshId": "int",
+        "materialId": "int"
+      }
+    },
+    {
+      "name": "LoadModelAnimations",
+      "description": "Load model animations from file",
+      "returnType": "ModelAnimation *",
+      "params": {
+        "fileName": "const char *",
+        "animsCount": "int *"
+      }
+    },
+    {
+      "name": "UpdateModelAnimation",
+      "description": "Update model animation pose",
+      "returnType": "void",
+      "params": {
+        "model": "Model",
+        "anim": "ModelAnimation",
+        "frame": "int"
+      }
+    },
+    {
+      "name": "UnloadModelAnimation",
+      "description": "Unload animation data",
+      "returnType": "void",
+      "params": {
+        "anim": "ModelAnimation"
+      }
+    },
+    {
+      "name": "UnloadModelAnimations",
+      "description": "Unload animation array data",
+      "returnType": "void",
+      "params": {
+        "animations": "ModelAnimation*",
+        "count": "unsigned int"
+      }
+    },
+    {
+      "name": "IsModelAnimationValid",
+      "description": "Check model animation skeleton match",
+      "returnType": "bool",
+      "params": {
+        "model": "Model",
+        "anim": "ModelAnimation"
+      }
+    },
+    {
+      "name": "GenMeshPoly",
+      "description": "Generate polygonal mesh",
+      "returnType": "Mesh",
+      "params": {
+        "sides": "int",
+        "radius": "float"
+      }
+    },
+    {
+      "name": "GenMeshPlane",
+      "description": "Generate plane mesh (with subdivisions)",
+      "returnType": "Mesh",
+      "params": {
+        "width": "float",
+        "length": "float",
+        "resX": "int",
+        "resZ": "int"
+      }
+    },
+    {
+      "name": "GenMeshCube",
+      "description": "Generate cuboid mesh",
+      "returnType": "Mesh",
+      "params": {
+        "width": "float",
+        "height": "float",
+        "length": "float"
+      }
+    },
+    {
+      "name": "GenMeshSphere",
+      "description": "Generate sphere mesh (standard sphere)",
+      "returnType": "Mesh",
+      "params": {
+        "radius": "float",
+        "rings": "int",
+        "slices": "int"
+      }
+    },
+    {
+      "name": "GenMeshHemiSphere",
+      "description": "Generate half-sphere mesh (no bottom cap)",
+      "returnType": "Mesh",
+      "params": {
+        "radius": "float",
+        "rings": "int",
+        "slices": "int"
+      }
+    },
+    {
+      "name": "GenMeshCylinder",
+      "description": "Generate cylinder mesh",
+      "returnType": "Mesh",
+      "params": {
+        "radius": "float",
+        "height": "float",
+        "slices": "int"
+      }
+    },
+    {
+      "name": "GenMeshTorus",
+      "description": "Generate torus mesh",
+      "returnType": "Mesh",
+      "params": {
+        "radius": "float",
+        "size": "float",
+        "radSeg": "int",
+        "sides": "int"
+      }
+    },
+    {
+      "name": "GenMeshKnot",
+      "description": "Generate trefoil knot mesh",
+      "returnType": "Mesh",
+      "params": {
+        "radius": "float",
+        "size": "float",
+        "radSeg": "int",
+        "sides": "int"
+      }
+    },
+    {
+      "name": "GenMeshHeightmap",
+      "description": "Generate heightmap mesh from image data",
+      "returnType": "Mesh",
+      "params": {
+        "heightmap": "Image",
+        "size": "Vector3"
+      }
+    },
+    {
+      "name": "GenMeshCubicmap",
+      "description": "Generate cubes-based map mesh from image data",
+      "returnType": "Mesh",
+      "params": {
+        "cubicmap": "Image",
+        "cubeSize": "Vector3"
+      }
+    },
+    {
+      "name": "GetMeshBoundingBox",
+      "description": "Compute mesh bounding box limits",
+      "returnType": "BoundingBox",
+      "params": {
+        "mesh": "Mesh"
+      }
+    },
+    {
+      "name": "MeshTangents",
+      "description": "Compute mesh tangents",
+      "returnType": "void",
+      "params": {
+        "mesh": "Mesh *"
+      }
+    },
+    {
+      "name": "MeshBinormals",
+      "description": "Compute mesh binormals",
+      "returnType": "void",
+      "params": {
+        "mesh": "Mesh *"
+      }
+    },
+    {
+      "name": "DrawModel",
+      "description": "Draw a model (with texture if set)",
+      "returnType": "void",
+      "params": {
+        "model": "Model",
+        "position": "Vector3",
+        "scale": "float",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "DrawModelEx",
+      "description": "Draw a model with extended parameters",
+      "returnType": "void",
+      "params": {
+        "model": "Model",
+        "position": "Vector3",
+        "rotationAxis": "Vector3",
+        "rotationAngle": "float",
+        "scale": "Vector3",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "DrawModelWires",
+      "description": "Draw a model wires (with texture if set)",
+      "returnType": "void",
+      "params": {
+        "model": "Model",
+        "position": "Vector3",
+        "scale": "float",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "DrawModelWiresEx",
+      "description": "Draw a model wires (with texture if set) with extended parameters",
+      "returnType": "void",
+      "params": {
+        "model": "Model",
+        "position": "Vector3",
+        "rotationAxis": "Vector3",
+        "rotationAngle": "float",
+        "scale": "Vector3",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "DrawBoundingBox",
+      "description": "Draw bounding box (wires)",
+      "returnType": "void",
+      "params": {
+        "box": "BoundingBox",
+        "color": "Color"
+      }
+    },
+    {
+      "name": "DrawBillboard",
+      "description": "Draw a billboard texture",
+      "returnType": "void",
+      "params": {
+        "camera": "Camera",
+        "texture": "Texture2D",
+        "position": "Vector3",
+        "size": "float",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "DrawBillboardRec",
+      "description": "Draw a billboard texture defined by source",
+      "returnType": "void",
+      "params": {
+        "camera": "Camera",
+        "texture": "Texture2D",
+        "source": "Rectangle",
+        "position": "Vector3",
+        "size": "Vector2",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "DrawBillboardPro",
+      "description": "Draw a billboard texture defined by source and rotation",
+      "returnType": "void",
+      "params": {
+        "camera": "Camera",
+        "texture": "Texture2D",
+        "source": "Rectangle",
+        "position": "Vector3",
+        "size": "Vector2",
+        "origin": "Vector2",
+        "rotation": "float",
+        "tint": "Color"
+      }
+    },
+    {
+      "name": "CheckCollisionSpheres",
+      "description": "Check collision between two spheres",
+      "returnType": "bool",
+      "params": {
+        "center1": "Vector3",
+        "radius1": "float",
+        "center2": "Vector3",
+        "radius2": "float"
+      }
+    },
+    {
+      "name": "CheckCollisionBoxes",
+      "description": "Check collision between two bounding boxes",
+      "returnType": "bool",
+      "params": {
+        "box1": "BoundingBox",
+        "box2": "BoundingBox"
+      }
+    },
+    {
+      "name": "CheckCollisionBoxSphere",
+      "description": "Check collision between box and sphere",
+      "returnType": "bool",
+      "params": {
+        "box": "BoundingBox",
+        "center": "Vector3",
+        "radius": "float"
+      }
+    },
+    {
+      "name": "GetRayCollisionSphere",
+      "description": "Get collision info between ray and sphere",
+      "returnType": "RayCollision",
+      "params": {
+        "ray": "Ray",
+        "center": "Vector3",
+        "radius": "float"
+      }
+    },
+    {
+      "name": "GetRayCollisionBox",
+      "description": "Get collision info between ray and box",
+      "returnType": "RayCollision",
+      "params": {
+        "ray": "Ray",
+        "box": "BoundingBox"
+      }
+    },
+    {
+      "name": "GetRayCollisionModel",
+      "description": "Get collision info between ray and model",
+      "returnType": "RayCollision",
+      "params": {
+        "ray": "Ray",
+        "model": "Model"
+      }
+    },
+    {
+      "name": "GetRayCollisionMesh",
+      "description": "Get collision info between ray and mesh",
+      "returnType": "RayCollision",
+      "params": {
+        "ray": "Ray",
+        "mesh": "Mesh",
+        "transform": "Matrix"
+      }
+    },
+    {
+      "name": "GetRayCollisionTriangle",
+      "description": "Get collision info between ray and triangle",
+      "returnType": "RayCollision",
+      "params": {
+        "ray": "Ray",
+        "p1": "Vector3",
+        "p2": "Vector3",
+        "p3": "Vector3"
+      }
+    },
+    {
+      "name": "GetRayCollisionQuad",
+      "description": "Get collision info between ray and quad",
+      "returnType": "RayCollision",
+      "params": {
+        "ray": "Ray",
+        "p1": "Vector3",
+        "p2": "Vector3",
+        "p3": "Vector3",
+        "p4": "Vector3"
+      }
+    },
+    {
+      "name": "InitAudioDevice",
+      "description": "Initialize audio device and context",
+      "returnType": "void"
+    },
+    {
+      "name": "CloseAudioDevice",
+      "description": "Close the audio device and context",
+      "returnType": "void"
+    },
+    {
+      "name": "IsAudioDeviceReady",
+      "description": "Check if audio device has been initialized successfully",
+      "returnType": "bool"
+    },
+    {
+      "name": "SetMasterVolume",
+      "description": "Set master volume (listener)",
+      "returnType": "void",
+      "params": {
+        "volume": "float"
+      }
+    },
+    {
+      "name": "LoadWave",
+      "description": "Load wave data from file",
+      "returnType": "Wave",
+      "params": {
+        "fileName": "const char *"
+      }
+    },
+    {
+      "name": "LoadWaveFromMemory",
+      "description": "Load wave from memory buffer, fileType refers to extension: i.e. '.wav'",
+      "returnType": "Wave",
+      "params": {
+        "fileType": "const char *",
+        "fileData": "const unsigned char *",
+        "dataSize": "int"
+      }
+    },
+    {
+      "name": "LoadSound",
+      "description": "Load sound from file",
+      "returnType": "Sound",
+      "params": {
+        "fileName": "const char *"
+      }
+    },
+    {
+      "name": "LoadSoundFromWave",
+      "description": "Load sound from wave data",
+      "returnType": "Sound",
+      "params": {
+        "wave": "Wave"
+      }
+    },
+    {
+      "name": "UpdateSound",
+      "description": "Update sound buffer with new data",
+      "returnType": "void",
+      "params": {
+        "sound": "Sound",
+        "data": "const void *",
+        "samplesCount": "int"
+      }
+    },
+    {
+      "name": "UnloadWave",
+      "description": "Unload wave data",
+      "returnType": "void",
+      "params": {
+        "wave": "Wave"
+      }
+    },
+    {
+      "name": "UnloadSound",
+      "description": "Unload sound",
+      "returnType": "void",
+      "params": {
+        "sound": "Sound"
+      }
+    },
+    {
+      "name": "ExportWave",
+      "description": "Export wave data to file, returns true on success",
+      "returnType": "bool",
+      "params": {
+        "wave": "Wave",
+        "fileName": "const char *"
+      }
+    },
+    {
+      "name": "ExportWaveAsCode",
+      "description": "Export wave sample data to code (.h), returns true on success",
+      "returnType": "bool",
+      "params": {
+        "wave": "Wave",
+        "fileName": "const char *"
+      }
+    },
+    {
+      "name": "PlaySound",
+      "description": "Play a sound",
+      "returnType": "void",
+      "params": {
+        "sound": "Sound"
+      }
+    },
+    {
+      "name": "StopSound",
+      "description": "Stop playing a sound",
+      "returnType": "void",
+      "params": {
+        "sound": "Sound"
+      }
+    },
+    {
+      "name": "PauseSound",
+      "description": "Pause a sound",
+      "returnType": "void",
+      "params": {
+        "sound": "Sound"
+      }
+    },
+    {
+      "name": "ResumeSound",
+      "description": "Resume a paused sound",
+      "returnType": "void",
+      "params": {
+        "sound": "Sound"
+      }
+    },
+    {
+      "name": "PlaySoundMulti",
+      "description": "Play a sound (using multichannel buffer pool)",
+      "returnType": "void",
+      "params": {
+        "sound": "Sound"
+      }
+    },
+    {
+      "name": "StopSoundMulti",
+      "description": "Stop any sound playing (using multichannel buffer pool)",
+      "returnType": "void"
+    },
+    {
+      "name": "GetSoundsPlaying",
+      "description": "Get number of sounds playing in the multichannel",
+      "returnType": "int"
+    },
+    {
+      "name": "IsSoundPlaying",
+      "description": "Check if a sound is currently playing",
+      "returnType": "bool",
+      "params": {
+        "sound": "Sound"
+      }
+    },
+    {
+      "name": "SetSoundVolume",
+      "description": "Set volume for a sound (1.0 is max level)",
+      "returnType": "void",
+      "params": {
+        "sound": "Sound",
+        "volume": "float"
+      }
+    },
+    {
+      "name": "SetSoundPitch",
+      "description": "Set pitch for a sound (1.0 is base level)",
+      "returnType": "void",
+      "params": {
+        "sound": "Sound",
+        "pitch": "float"
+      }
+    },
+    {
+      "name": "WaveFormat",
+      "description": "Convert wave data to desired format",
+      "returnType": "void",
+      "params": {
+        "wave": "Wave *",
+        "sampleRate": "int",
+        "sampleSize": "int",
+        "channels": "int"
+      }
+    },
+    {
+      "name": "WaveCopy",
+      "description": "Copy a wave to a new wave",
+      "returnType": "Wave",
+      "params": {
+        "wave": "Wave"
+      }
+    },
+    {
+      "name": "WaveCrop",
+      "description": "Crop a wave to defined samples range",
+      "returnType": "void",
+      "params": {
+        "wave": "Wave *",
+        "initSample": "int",
+        "finalSample": "int"
+      }
+    },
+    {
+      "name": "LoadWaveSamples",
+      "description": "Load samples data from wave as a floats array",
+      "returnType": "float *",
+      "params": {
+        "wave": "Wave"
+      }
+    },
+    {
+      "name": "UnloadWaveSamples",
+      "description": "Unload samples data loaded with LoadWaveSamples()",
+      "returnType": "void",
+      "params": {
+        "samples": "float *"
+      }
+    },
+    {
+      "name": "LoadMusicStream",
+      "description": "Load music stream from file",
+      "returnType": "Music",
+      "params": {
+        "fileName": "const char *"
+      }
+    },
+    {
+      "name": "LoadMusicStreamFromMemory",
+      "description": "Load music stream from data",
+      "returnType": "Music",
+      "params": {
+        "fileType": "const char *",
+        "data": "unsigned char *",
+        "dataSize": "int"
+      }
+    },
+    {
+      "name": "UnloadMusicStream",
+      "description": "Unload music stream",
+      "returnType": "void",
+      "params": {
+        "music": "Music"
+      }
+    },
+    {
+      "name": "PlayMusicStream",
+      "description": "Start music playing",
+      "returnType": "void",
+      "params": {
+        "music": "Music"
+      }
+    },
+    {
+      "name": "IsMusicStreamPlaying",
+      "description": "Check if music is playing",
+      "returnType": "bool",
+      "params": {
+        "music": "Music"
+      }
+    },
+    {
+      "name": "UpdateMusicStream",
+      "description": "Updates buffers for music streaming",
+      "returnType": "void",
+      "params": {
+        "music": "Music"
+      }
+    },
+    {
+      "name": "StopMusicStream",
+      "description": "Stop music playing",
+      "returnType": "void",
+      "params": {
+        "music": "Music"
+      }
+    },
+    {
+      "name": "PauseMusicStream",
+      "description": "Pause music playing",
+      "returnType": "void",
+      "params": {
+        "music": "Music"
+      }
+    },
+    {
+      "name": "ResumeMusicStream",
+      "description": "Resume playing paused music",
+      "returnType": "void",
+      "params": {
+        "music": "Music"
+      }
+    },
+    {
+      "name": "SetMusicVolume",
+      "description": "Set volume for music (1.0 is max level)",
+      "returnType": "void",
+      "params": {
+        "music": "Music",
+        "volume": "float"
+      }
+    },
+    {
+      "name": "SetMusicPitch",
+      "description": "Set pitch for a music (1.0 is base level)",
+      "returnType": "void",
+      "params": {
+        "music": "Music",
+        "pitch": "float"
+      }
+    },
+    {
+      "name": "GetMusicTimeLength",
+      "description": "Get music time length (in seconds)",
+      "returnType": "float",
+      "params": {
+        "music": "Music"
+      }
+    },
+    {
+      "name": "GetMusicTimePlayed",
+      "description": "Get current music time played (in seconds)",
+      "returnType": "float",
+      "params": {
+        "music": "Music"
+      }
+    },
+    {
+      "name": "LoadAudioStream",
+      "description": "Load audio stream (to stream raw audio pcm data)",
+      "returnType": "AudioStream",
+      "params": {
+        "sampleRate": "unsigned int",
+        "sampleSize": "unsigned int",
+        "channels": "unsigned int"
+      }
+    },
+    {
+      "name": "UnloadAudioStream",
+      "description": "Unload audio stream and free memory",
+      "returnType": "void",
+      "params": {
+        "stream": "AudioStream"
+      }
+    },
+    {
+      "name": "UpdateAudioStream",
+      "description": "Update audio stream buffers with data",
+      "returnType": "void",
+      "params": {
+        "stream": "AudioStream",
+        "data": "const void *",
+        "samplesCount": "int"
+      }
+    },
+    {
+      "name": "IsAudioStreamProcessed",
+      "description": "Check if any audio stream buffers requires refill",
+      "returnType": "bool",
+      "params": {
+        "stream": "AudioStream"
+      }
+    },
+    {
+      "name": "PlayAudioStream",
+      "description": "Play audio stream",
+      "returnType": "void",
+      "params": {
+        "stream": "AudioStream"
+      }
+    },
+    {
+      "name": "PauseAudioStream",
+      "description": "Pause audio stream",
+      "returnType": "void",
+      "params": {
+        "stream": "AudioStream"
+      }
+    },
+    {
+      "name": "ResumeAudioStream",
+      "description": "Resume audio stream",
+      "returnType": "void",
+      "params": {
+        "stream": "AudioStream"
+      }
+    },
+    {
+      "name": "IsAudioStreamPlaying",
+      "description": "Check if audio stream is playing",
+      "returnType": "bool",
+      "params": {
+        "stream": "AudioStream"
+      }
+    },
+    {
+      "name": "StopAudioStream",
+      "description": "Stop audio stream",
+      "returnType": "void",
+      "params": {
+        "stream": "AudioStream"
+      }
+    },
+    {
+      "name": "SetAudioStreamVolume",
+      "description": "Set volume for audio stream (1.0 is max level)",
+      "returnType": "void",
+      "params": {
+        "stream": "AudioStream",
+        "volume": "float"
+      }
+    },
+    {
+      "name": "SetAudioStreamPitch",
+      "description": "Set pitch for audio stream (1.0 is base level)",
+      "returnType": "void",
+      "params": {
+        "stream": "AudioStream",
+        "pitch": "float"
+      }
+    },
+    {
+      "name": "SetAudioStreamBufferSizeDefault",
+      "description": "Default size for new audio streams",
+      "returnType": "void",
+      "params": {
+        "size": "int"
+      }
+    }
+  ]
+}

+ 3568 - 0
parser/raylib_api.txt

@@ -0,0 +1,3568 @@
+
+Structures found: 31
+
+Struct 01: Vector2 (2 fields)
+  Name: Vector2
+  Description: 
+  Field[1]: float x // Vector x component
+  Field[2]: float y // Vector y component
+Struct 02: Vector3 (3 fields)
+  Name: Vector3
+  Description: 
+  Field[1]: float x // Vector x component
+  Field[2]: float y // Vector y component
+  Field[3]: float z // Vector z component
+Struct 03: Vector4 (4 fields)
+  Name: Vector4
+  Description: 
+  Field[1]: float x // Vector x component
+  Field[2]: float y // Vector y component
+  Field[3]: float z // Vector z component
+  Field[4]: float w // Vector w component
+Struct 04: Matrix (4 fields)
+  Name: Matrix
+  Description: 
+  Field[1]: float m0, m4, m8, m12 // Matrix first row (4 components)
+  Field[2]: float m1, m5, m9, m13 // Matrix second row (4 components)
+  Field[3]: float m2, m6, m10, m14 // Matrix third row (4 components)
+  Field[4]: float m3, m7, m11, m15 // Matrix fourth row (4 components)
+Struct 05: Color (4 fields)
+  Name: Color
+  Description: 
+  Field[1]: unsigned char r // Color red value
+  Field[2]: unsigned char g // Color green value
+  Field[3]: unsigned char b // Color blue value
+  Field[4]: unsigned char a // Color alpha value
+Struct 06: Rectangle (4 fields)
+  Name: Rectangle
+  Description: 
+  Field[1]: float x // Rectangle top-left corner position x 
+  Field[2]: float y // Rectangle top-left corner position y
+  Field[3]: float width // Rectangle width
+  Field[4]: float height // Rectangle height
+Struct 07: Image (5 fields)
+  Name: Image
+  Description: 
+  Field[1]: void * data // Image raw data
+  Field[2]: int width // Image base width
+  Field[3]: int height // Image base height
+  Field[4]: int mipmaps // Mipmap levels, 1 by default
+  Field[5]: int format // Data format (PixelFormat type)
+Struct 08: Texture (5 fields)
+  Name: Texture
+  Description: 
+  Field[1]: unsigned int id // OpenGL texture id
+  Field[2]: int width // Texture base width
+  Field[3]: int height // Texture base height
+  Field[4]: int mipmaps // Mipmap levels, 1 by default
+  Field[5]: int format // Data format (PixelFormat type)
+Struct 09: RenderTexture (3 fields)
+  Name: RenderTexture
+  Description: 
+  Field[1]: unsigned int id // OpenGL framebuffer object id
+  Field[2]: Texture texture // Color buffer attachment texture
+  Field[3]: Texture depth // Depth buffer attachment texture
+Struct 10: NPatchInfo (6 fields)
+  Name: NPatchInfo
+  Description: 
+  Field[1]: Rectangle source // Texture source rectangle
+  Field[2]: int left // Left border offset
+  Field[3]: int top // Top border offset
+  Field[4]: int right // Right border offset
+  Field[5]: int bottom // Bottom border offset
+  Field[6]: int layout // Layout of the n-patch: 3x3, 1x3 or 3x1
+Struct 11: CharInfo (5 fields)
+  Name: CharInfo
+  Description: 
+  Field[1]: int value // Character value (Unicode)
+  Field[2]: int offsetX // Character offset X when drawing
+  Field[3]: int offsetY // Character offset Y when drawing
+  Field[4]: int advanceX // Character advance position X
+  Field[5]: Image image // Character image data
+Struct 12: Font (6 fields)
+  Name: Font
+  Description: 
+  Field[1]: int baseSize // Base size (default chars height)
+  Field[2]: int charsCount // Number of characters
+  Field[3]: int charsPadding // Padding around the chars
+  Field[4]: Texture2D texture // Characters texture atlas
+  Field[5]: Rectangle * recs // Characters rectangles in texture
+  Field[6]: CharInfo * chars // Characters info data
+Struct 13: Camera3D (5 fields)
+  Name: Camera3D
+  Description: 
+  Field[1]: Vector3 position // Camera position
+  Field[2]: Vector3 target // Camera target it looks-at
+  Field[3]: Vector3 up // Camera up vector (rotation over its axis)
+  Field[4]: float fovy // Camera field-of-view apperture in Y (degrees) in perspective, used as near plane width in orthographic
+  Field[5]: int projection // Camera projection: CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC
+Struct 14: Camera2D (4 fields)
+  Name: Camera2D
+  Description: 
+  Field[1]: Vector2 offset // Camera offset (displacement from target)
+  Field[2]: Vector2 target // Camera target (rotation and zoom origin)
+  Field[3]: float rotation // Camera rotation in degrees
+  Field[4]: float zoom // Camera zoom (scaling), should be 1.0f by default
+Struct 15: Mesh (15 fields)
+  Name: Mesh
+  Description: 
+  Field[1]: int vertexCount // Number of vertices stored in arrays
+  Field[2]: int triangleCount // Number of triangles stored (indexed or not)
+  Field[3]: float * vertices // Vertex position (XYZ - 3 components per vertex) (shader-location = 0)
+  Field[4]: float * texcoords // Vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1)
+  Field[5]: float * texcoords2 // Vertex second texture coordinates (useful for lightmaps) (shader-location = 5)
+  Field[6]: float * normals // Vertex normals (XYZ - 3 components per vertex) (shader-location = 2)
+  Field[7]: float * tangents // Vertex tangents (XYZW - 4 components per vertex) (shader-location = 4)
+  Field[8]: unsigned char * colors // Vertex colors (RGBA - 4 components per vertex) (shader-location = 3)
+  Field[9]: unsigned short * indices // Vertex indices (in case vertex data comes indexed)
+  Field[10]: float * animVertices // Animated vertex positions (after bones transformations)
+  Field[11]: float * animNormals // Animated normals (after bones transformations)
+  Field[12]: int * boneIds // Vertex bone ids, up to 4 bones influence by vertex (skinning)
+  Field[13]: float * boneWeights // Vertex bone weight, up to 4 bones influence by vertex (skinning)
+  Field[14]: unsigned int vaoId // OpenGL Vertex Array Object id
+  Field[15]: unsigned int * vboId // OpenGL Vertex Buffer Objects id (default vertex data)
+Struct 16: Shader (2 fields)
+  Name: Shader
+  Description: 
+  Field[1]: unsigned int id // Shader program id
+  Field[2]: int * locs // Shader locations array (MAX_SHADER_LOCATIONS)
+Struct 17: MaterialMap (3 fields)
+  Name: MaterialMap
+  Description: 
+  Field[1]: Texture2D texture // Material map texture
+  Field[2]: Color color // Material map color
+  Field[3]: float value // Material map value
+Struct 18: Material (3 fields)
+  Name: Material
+  Description: 
+  Field[1]: Shader shader // Material shader
+  Field[2]: MaterialMap * maps // Material maps array (MAX_MATERIAL_MAPS)
+  Field[3]: float params[4] // Material generic parameters (if required)
+Struct 19: Transform (3 fields)
+  Name: Transform
+  Description: 
+  Field[1]: Vector3 translation // Translation
+  Field[2]: Quaternion rotation // Rotation
+  Field[3]: Vector3 scale // Scale
+Struct 20: BoneInfo (2 fields)
+  Name: BoneInfo
+  Description: 
+  Field[1]: char name[32] // Bone name
+  Field[2]: int parent // Bone parent
+Struct 21: Model (9 fields)
+  Name: Model
+  Description: 
+  Field[1]: Matrix transform // Local transform matrix
+  Field[2]: int meshCount // Number of meshes
+  Field[3]: int materialCount // Number of materials
+  Field[4]: Mesh * meshes // Meshes array
+  Field[5]: Material * materials // Materials array
+  Field[6]: int * meshMaterial // Mesh material number
+  Field[7]: int boneCount // Number of bones
+  Field[8]: BoneInfo * bones // Bones information (skeleton)
+  Field[9]: Transform * bindPose // Bones base transformation (pose)
+Struct 22: ModelAnimation (4 fields)
+  Name: ModelAnimation
+  Description: 
+  Field[1]: int boneCount // Number of bones
+  Field[2]: int frameCount // Number of animation frames
+  Field[3]: BoneInfo * bones // Bones information (skeleton)
+  Field[4]: Transform ** framePoses // Poses array by frame
+Struct 23: Ray (2 fields)
+  Name: Ray
+  Description: 
+  Field[1]: Vector3 position // Ray position (origin)
+  Field[2]: Vector3 direction // Ray direction
+Struct 24: RayCollision (4 fields)
+  Name: RayCollision
+  Description: 
+  Field[1]: bool hit // Did the ray hit something?
+  Field[2]: float distance // Distance to nearest hit
+  Field[3]: Vector3 point // Point of nearest hit
+  Field[4]: Vector3 normal // Surface normal of hit
+Struct 25: BoundingBox (2 fields)
+  Name: BoundingBox
+  Description: 
+  Field[1]: Vector3 min // Minimum vertex box-corner
+  Field[2]: Vector3 max // Maximum vertex box-corner
+Struct 26: Wave (5 fields)
+  Name: Wave
+  Description: 
+  Field[1]: unsigned int sampleCount // Total number of samples (considering channels!)
+  Field[2]: unsigned int sampleRate // Frequency (samples per second)
+  Field[3]: unsigned int sampleSize // Bit depth (bits per sample): 8, 16, 32 (24 not supported)
+  Field[4]: unsigned int channels // Number of channels (1-mono, 2-stereo)
+  Field[5]: void * data // Buffer data pointer
+Struct 27: AudioStream (4 fields)
+  Name: AudioStream
+  Description: 
+  Field[1]: rAudioBuffer * buffer // Pointer to internal data used by the audio system
+  Field[2]: unsigned int sampleRate // Frequency (samples per second)
+  Field[3]: unsigned int sampleSize // Bit depth (bits per sample): 8, 16, 32 (24 not supported)
+  Field[4]: unsigned int channels // Number of channels (1-mono, 2-stereo)
+Struct 28: Sound (2 fields)
+  Name: Sound
+  Description: 
+  Field[1]: AudioStream stream // Audio stream
+  Field[2]: unsigned int sampleCount // Total number of samples
+Struct 29: Music (5 fields)
+  Name: Music
+  Description: 
+  Field[1]: AudioStream stream // Audio stream
+  Field[2]: unsigned int sampleCount // Total number of samples
+  Field[3]: bool looping // Music looping enable
+  Field[4]: int ctxType // Type of music context (audio filetype)
+  Field[5]: void * ctxData // Audio context data, depends on type
+Struct 30: VrDeviceInfo (10 fields)
+  Name: VrDeviceInfo
+  Description: 
+  Field[1]: int hResolution // Horizontal resolution in pixels
+  Field[2]: int vResolution // Vertical resolution in pixels
+  Field[3]: float hScreenSize // Horizontal size in meters
+  Field[4]: float vScreenSize // Vertical size in meters
+  Field[5]: float vScreenCenter // Screen center in meters
+  Field[6]: float eyeToScreenDistance // Distance between eye and display in meters
+  Field[7]: float lensSeparationDistance // Lens separation distance in meters
+  Field[8]: float interpupillaryDistance // IPD (distance between pupils) in meters
+  Field[9]: float lensDistortionValues[4] // Lens distortion constant parameters
+  Field[10]: float chromaAbCorrection[4] // Chromatic aberration correction parameters
+Struct 31: VrStereoConfig (8 fields)
+  Name: VrStereoConfig
+  Description: 
+  Field[1]: Matrix projection[2] // VR projection matrices (per eye)
+  Field[2]: Matrix viewOffset[2] // VR view offset matrices (per eye)
+  Field[3]: float leftLensCenter[2] // VR left lens center
+  Field[4]: float rightLensCenter[2] // VR right lens center
+  Field[5]: float leftScreenCenter[2] // VR left screen center
+  Field[6]: float rightScreenCenter[2] // VR right screen center
+  Field[7]: float scale[2] // VR distortion scale
+  Field[8]: float scaleIn[2] // VR distortion scale in
+
+Enums found: 21
+
+Enum 01: ConfigFlags (14 values)
+  Name: ConfigFlags
+ Description: 
+  Value[FLAG_VSYNC_HINT]: 64
+  Value[FLAG_FULLSCREEN_MODE]: 2
+  Value[FLAG_WINDOW_RESIZABLE]: 4
+  Value[FLAG_WINDOW_UNDECORATED]: 8
+  Value[FLAG_WINDOW_HIDDEN]: 128
+  Value[FLAG_WINDOW_MINIMIZED]: 512
+  Value[FLAG_WINDOW_MAXIMIZED]: 1024
+  Value[FLAG_WINDOW_UNFOCUSED]: 2048
+  Value[FLAG_WINDOW_TOPMOST]: 4096
+  Value[FLAG_WINDOW_ALWAYS_RUN]: 256
+  Value[FLAG_WINDOW_TRANSPARENT]: 16
+  Value[FLAG_WINDOW_HIGHDPI]: 8192
+  Value[FLAG_MSAA_4X_HINT]: 32
+  Value[FLAG_INTERLACED_HINT]: 65536
+Enum 02: TraceLogLevel (8 values)
+  Name: TraceLogLevel
+ Description: 
+  Value[LOG_ALL]: 0
+  Value[LOG_TRACE]: 1
+  Value[LOG_DEBUG]: 2
+  Value[LOG_INFO]: 3
+  Value[LOG_WARNING]: 4
+  Value[LOG_ERROR]: 5
+  Value[LOG_FATAL]: 6
+  Value[LOG_NONE]: 7
+Enum 03: KeyboardKey (110 values)
+  Name: KeyboardKey
+ Description: 
+  Value[KEY_NULL]: 0
+  Value[KEY_APOSTROPHE]: 39
+  Value[KEY_COMMA]: 44
+  Value[KEY_MINUS]: 45
+  Value[KEY_PERIOD]: 46
+  Value[KEY_SLASH]: 47
+  Value[KEY_ZERO]: 48
+  Value[KEY_ONE]: 49
+  Value[KEY_TWO]: 50
+  Value[KEY_THREE]: 51
+  Value[KEY_FOUR]: 52
+  Value[KEY_FIVE]: 53
+  Value[KEY_SIX]: 54
+  Value[KEY_SEVEN]: 55
+  Value[KEY_EIGHT]: 56
+  Value[KEY_NINE]: 57
+  Value[KEY_SEMICOLON]: 59
+  Value[KEY_EQUAL]: 61
+  Value[KEY_A]: 65
+  Value[KEY_B]: 66
+  Value[KEY_C]: 67
+  Value[KEY_D]: 68
+  Value[KEY_E]: 69
+  Value[KEY_F]: 70
+  Value[KEY_G]: 71
+  Value[KEY_H]: 72
+  Value[KEY_I]: 73
+  Value[KEY_J]: 74
+  Value[KEY_K]: 75
+  Value[KEY_L]: 76
+  Value[KEY_M]: 77
+  Value[KEY_N]: 78
+  Value[KEY_O]: 79
+  Value[KEY_P]: 80
+  Value[KEY_Q]: 81
+  Value[KEY_R]: 82
+  Value[KEY_S]: 83
+  Value[KEY_T]: 84
+  Value[KEY_U]: 85
+  Value[KEY_V]: 86
+  Value[KEY_W]: 87
+  Value[KEY_X]: 88
+  Value[KEY_Y]: 89
+  Value[KEY_Z]: 90
+  Value[KEY_SPACE]: 32
+  Value[KEY_ESCAPE]: 256
+  Value[KEY_ENTER]: 257
+  Value[KEY_TAB]: 258
+  Value[KEY_BACKSPACE]: 259
+  Value[KEY_INSERT]: 260
+  Value[KEY_DELETE]: 261
+  Value[KEY_RIGHT]: 262
+  Value[KEY_LEFT]: 263
+  Value[KEY_DOWN]: 264
+  Value[KEY_UP]: 265
+  Value[KEY_PAGE_UP]: 266
+  Value[KEY_PAGE_DOWN]: 267
+  Value[KEY_HOME]: 268
+  Value[KEY_END]: 269
+  Value[KEY_CAPS_LOCK]: 280
+  Value[KEY_SCROLL_LOCK]: 281
+  Value[KEY_NUM_LOCK]: 282
+  Value[KEY_PRINT_SCREEN]: 283
+  Value[KEY_PAUSE]: 284
+  Value[KEY_F1]: 290
+  Value[KEY_F2]: 291
+  Value[KEY_F3]: 292
+  Value[KEY_F4]: 293
+  Value[KEY_F5]: 294
+  Value[KEY_F6]: 295
+  Value[KEY_F7]: 296
+  Value[KEY_F8]: 297
+  Value[KEY_F9]: 298
+  Value[KEY_F10]: 299
+  Value[KEY_F11]: 300
+  Value[KEY_F12]: 301
+  Value[KEY_LEFT_SHIFT]: 340
+  Value[KEY_LEFT_CONTROL]: 341
+  Value[KEY_LEFT_ALT]: 342
+  Value[KEY_LEFT_SUPER]: 343
+  Value[KEY_RIGHT_SHIFT]: 344
+  Value[KEY_RIGHT_CONTROL]: 345
+  Value[KEY_RIGHT_ALT]: 346
+  Value[KEY_RIGHT_SUPER]: 347
+  Value[KEY_KB_MENU]: 348
+  Value[KEY_LEFT_BRACKET]: 91
+  Value[KEY_BACKSLASH]: 92
+  Value[KEY_RIGHT_BRACKET]: 93
+  Value[KEY_GRAVE]: 96
+  Value[KEY_KP_0]: 320
+  Value[KEY_KP_1]: 321
+  Value[KEY_KP_2]: 322
+  Value[KEY_KP_3]: 323
+  Value[KEY_KP_4]: 324
+  Value[KEY_KP_5]: 325
+  Value[KEY_KP_6]: 326
+  Value[KEY_KP_7]: 327
+  Value[KEY_KP_8]: 328
+  Value[KEY_KP_9]: 329
+  Value[KEY_KP_DECIMAL]: 330
+  Value[KEY_KP_DIVIDE]: 331
+  Value[KEY_KP_MULTIPLY]: 332
+  Value[KEY_KP_SUBTRACT]: 333
+  Value[KEY_KP_ADD]: 334
+  Value[KEY_KP_ENTER]: 335
+  Value[KEY_KP_EQUAL]: 336
+  Value[KEY_BACK]: 4
+  Value[KEY_MENU]: 82
+  Value[KEY_VOLUME_UP]: 24
+  Value[KEY_VOLUME_DOWN]: 25
+Enum 04: MouseButton (7 values)
+  Name: MouseButton
+ Description: 
+  Value[MOUSE_BUTTON_LEFT]: 0
+  Value[MOUSE_BUTTON_RIGHT]: 1
+  Value[MOUSE_BUTTON_MIDDLE]: 2
+  Value[MOUSE_BUTTON_SIDE]: 3
+  Value[MOUSE_BUTTON_EXTRA]: 4
+  Value[MOUSE_BUTTON_FORWARD]: 5
+  Value[MOUSE_BUTTON_BACK]: 6
+Enum 05: MouseCursor (11 values)
+  Name: MouseCursor
+ Description: 
+  Value[MOUSE_CURSOR_DEFAULT]: 0
+  Value[MOUSE_CURSOR_ARROW]: 1
+  Value[MOUSE_CURSOR_IBEAM]: 2
+  Value[MOUSE_CURSOR_CROSSHAIR]: 3
+  Value[MOUSE_CURSOR_POINTING_HAND]: 4
+  Value[MOUSE_CURSOR_RESIZE_EW]: 5
+  Value[MOUSE_CURSOR_RESIZE_NS]: 6
+  Value[MOUSE_CURSOR_RESIZE_NWSE]: 7
+  Value[MOUSE_CURSOR_RESIZE_NESW]: 8
+  Value[MOUSE_CURSOR_RESIZE_ALL]: 9
+  Value[MOUSE_CURSOR_NOT_ALLOWED]: 10
+Enum 06: GamepadButton (18 values)
+  Name: GamepadButton
+ Description: 
+  Value[GAMEPAD_BUTTON_UNKNOWN]: 0
+  Value[GAMEPAD_BUTTON_LEFT_FACE_UP]: 1
+  Value[GAMEPAD_BUTTON_LEFT_FACE_RIGHT]: 2
+  Value[GAMEPAD_BUTTON_LEFT_FACE_DOWN]: 3
+  Value[GAMEPAD_BUTTON_LEFT_FACE_LEFT]: 4
+  Value[GAMEPAD_BUTTON_RIGHT_FACE_UP]: 5
+  Value[GAMEPAD_BUTTON_RIGHT_FACE_RIGHT]: 6
+  Value[GAMEPAD_BUTTON_RIGHT_FACE_DOWN]: 7
+  Value[GAMEPAD_BUTTON_RIGHT_FACE_LEFT]: 8
+  Value[GAMEPAD_BUTTON_LEFT_TRIGGER_1]: 9
+  Value[GAMEPAD_BUTTON_LEFT_TRIGGER_2]: 10
+  Value[GAMEPAD_BUTTON_RIGHT_TRIGGER_1]: 11
+  Value[GAMEPAD_BUTTON_RIGHT_TRIGGER_2]: 12
+  Value[GAMEPAD_BUTTON_MIDDLE_LEFT]: 13
+  Value[GAMEPAD_BUTTON_MIDDLE]: 14
+  Value[GAMEPAD_BUTTON_MIDDLE_RIGHT]: 15
+  Value[GAMEPAD_BUTTON_LEFT_THUMB]: 16
+  Value[GAMEPAD_BUTTON_RIGHT_THUMB]: 17
+Enum 07: GamepadAxis (6 values)
+  Name: GamepadAxis
+ Description: 
+  Value[GAMEPAD_AXIS_LEFT_X]: 0
+  Value[GAMEPAD_AXIS_LEFT_Y]: 1
+  Value[GAMEPAD_AXIS_RIGHT_X]: 2
+  Value[GAMEPAD_AXIS_RIGHT_Y]: 3
+  Value[GAMEPAD_AXIS_LEFT_TRIGGER]: 4
+  Value[GAMEPAD_AXIS_RIGHT_TRIGGER]: 5
+Enum 08: MaterialMapIndex (11 values)
+  Name: MaterialMapIndex
+ Description: 
+  Value[MATERIAL_MAP_ALBEDO]: 0
+  Value[MATERIAL_MAP_METALNESS]: 1
+  Value[MATERIAL_MAP_NORMAL]: 2
+  Value[MATERIAL_MAP_ROUGHNESS]: 3
+  Value[MATERIAL_MAP_OCCLUSION]: 4
+  Value[MATERIAL_MAP_EMISSION]: 5
+  Value[MATERIAL_MAP_HEIGHT]: 6
+  Value[MATERIAL_MAP_CUBEMAP]: 7
+  Value[MATERIAL_MAP_IRRADIANCE]: 8
+  Value[MATERIAL_MAP_PREFILTER]: 9
+  Value[MATERIAL_MAP_BRDG]: 10
+Enum 09: ShaderLocationIndex (26 values)
+  Name: ShaderLocationIndex
+ Description: 
+  Value[SHADER_LOC_VERTEX_POSITION]: 0
+  Value[SHADER_LOC_VERTEX_TEXCOORD01]: 1
+  Value[SHADER_LOC_VERTEX_TEXCOORD02]: 2
+  Value[SHADER_LOC_VERTEX_NORMAL]: 3
+  Value[SHADER_LOC_VERTEX_TANGENT]: 4
+  Value[SHADER_LOC_VERTEX_COLOR]: 5
+  Value[SHADER_LOC_MATRIX_MVP]: 6
+  Value[SHADER_LOC_MATRIX_VIEW]: 7
+  Value[SHADER_LOC_MATRIX_PROJECTION]: 8
+  Value[SHADER_LOC_MATRIX_MODEL]: 9
+  Value[SHADER_LOC_MATRIX_NORMAL]: 10
+  Value[SHADER_LOC_VECTOR_VIEW]: 11
+  Value[SHADER_LOC_COLOR_DIFFUSE]: 12
+  Value[SHADER_LOC_COLOR_SPECULAR]: 13
+  Value[SHADER_LOC_COLOR_AMBIENT]: 14
+  Value[SHADER_LOC_MAP_ALBEDO]: 15
+  Value[SHADER_LOC_MAP_METALNESS]: 16
+  Value[SHADER_LOC_MAP_NORMAL]: 17
+  Value[SHADER_LOC_MAP_ROUGHNESS]: 18
+  Value[SHADER_LOC_MAP_OCCLUSION]: 19
+  Value[SHADER_LOC_MAP_EMISSION]: 20
+  Value[SHADER_LOC_MAP_HEIGHT]: 21
+  Value[SHADER_LOC_MAP_CUBEMAP]: 22
+  Value[SHADER_LOC_MAP_IRRADIANCE]: 23
+  Value[SHADER_LOC_MAP_PREFILTER]: 24
+  Value[SHADER_LOC_MAP_BRDF]: 25
+Enum 10: ShaderUniformDataType (9 values)
+  Name: ShaderUniformDataType
+ Description: 
+  Value[SHADER_UNIFORM_FLOAT]: 0
+  Value[SHADER_UNIFORM_VEC2]: 1
+  Value[SHADER_UNIFORM_VEC3]: 2
+  Value[SHADER_UNIFORM_VEC4]: 3
+  Value[SHADER_UNIFORM_INT]: 4
+  Value[SHADER_UNIFORM_IVEC2]: 5
+  Value[SHADER_UNIFORM_IVEC3]: 6
+  Value[SHADER_UNIFORM_IVEC4]: 7
+  Value[SHADER_UNIFORM_SAMPLER2D]: 8
+Enum 11: ShaderAttributeDataType (4 values)
+  Name: ShaderAttributeDataType
+ Description: 
+  Value[SHADER_ATTRIB_FLOAT]: 0
+  Value[SHADER_ATTRIB_VEC2]: 1
+  Value[SHADER_ATTRIB_VEC3]: 2
+  Value[SHADER_ATTRIB_VEC4]: 3
+Enum 12: PixelFormat (21 values)
+  Name: PixelFormat
+ Description: 
+  Value[PIXELFORMAT_UNCOMPRESSED_GRAYSCALE]: 1
+  Value[PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA]: 2
+  Value[PIXELFORMAT_UNCOMPRESSED_R5G6B5]: 3
+  Value[PIXELFORMAT_UNCOMPRESSED_R8G8B8]: 4
+  Value[PIXELFORMAT_UNCOMPRESSED_R5G5B5A1]: 5
+  Value[PIXELFORMAT_UNCOMPRESSED_R4G4B4A4]: 6
+  Value[PIXELFORMAT_UNCOMPRESSED_R8G8B8A8]: 7
+  Value[PIXELFORMAT_UNCOMPRESSED_R32]: 8
+  Value[PIXELFORMAT_UNCOMPRESSED_R32G32B32]: 9
+  Value[PIXELFORMAT_UNCOMPRESSED_R32G32B32A32]: 10
+  Value[PIXELFORMAT_COMPRESSED_DXT1_RGB]: 11
+  Value[PIXELFORMAT_COMPRESSED_DXT1_RGBA]: 12
+  Value[PIXELFORMAT_COMPRESSED_DXT3_RGBA]: 13
+  Value[PIXELFORMAT_COMPRESSED_DXT5_RGBA]: 14
+  Value[PIXELFORMAT_COMPRESSED_ETC1_RGB]: 15
+  Value[PIXELFORMAT_COMPRESSED_ETC2_RGB]: 16
+  Value[PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA]: 17
+  Value[PIXELFORMAT_COMPRESSED_PVRT_RGB]: 18
+  Value[PIXELFORMAT_COMPRESSED_PVRT_RGBA]: 19
+  Value[PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA]: 20
+  Value[PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA]: 21
+Enum 13: TextureFilter (6 values)
+  Name: TextureFilter
+ Description: 
+  Value[TEXTURE_FILTER_POINT]: 0
+  Value[TEXTURE_FILTER_BILINEAR]: 1
+  Value[TEXTURE_FILTER_TRILINEAR]: 2
+  Value[TEXTURE_FILTER_ANISOTROPIC_4X]: 3
+  Value[TEXTURE_FILTER_ANISOTROPIC_8X]: 4
+  Value[TEXTURE_FILTER_ANISOTROPIC_16X]: 5
+Enum 14: TextureWrap (4 values)
+  Name: TextureWrap
+ Description: 
+  Value[TEXTURE_WRAP_REPEAT]: 0
+  Value[TEXTURE_WRAP_CLAMP]: 1
+  Value[TEXTURE_WRAP_MIRROR_REPEAT]: 2
+  Value[TEXTURE_WRAP_MIRROR_CLAMP]: 3
+Enum 15: CubemapLayout (6 values)
+  Name: CubemapLayout
+ Description: 
+  Value[CUBEMAP_LAYOUT_AUTO_DETECT]: 0
+  Value[CUBEMAP_LAYOUT_LINE_VERTICAL]: 1
+  Value[CUBEMAP_LAYOUT_LINE_HORIZONTAL]: 2
+  Value[CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR]: 3
+  Value[CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE]: 4
+  Value[CUBEMAP_LAYOUT_PANORAMA]: 5
+Enum 16: FontType (3 values)
+  Name: FontType
+ Description: 
+  Value[FONT_DEFAULT]: 0
+  Value[FONT_BITMAP]: 1
+  Value[FONT_SDF]: 2
+Enum 17: BlendMode (6 values)
+  Name: BlendMode
+ Description: 
+  Value[BLEND_ALPHA]: 0
+  Value[BLEND_ADDITIVE]: 1
+  Value[BLEND_MULTIPLIED]: 2
+  Value[BLEND_ADD_COLORS]: 3
+  Value[BLEND_SUBTRACT_COLORS]: 4
+  Value[BLEND_CUSTOM]: 5
+Enum 18: Gesture (11 values)
+  Name: Gesture
+ Description: 
+  Value[GESTURE_NONE]: 0
+  Value[GESTURE_TAP]: 1
+  Value[GESTURE_DOUBLETAP]: 2
+  Value[GESTURE_HOLD]: 4
+  Value[GESTURE_DRAG]: 8
+  Value[GESTURE_SWIPE_RIGHT]: 16
+  Value[GESTURE_SWIPE_LEFT]: 32
+  Value[GESTURE_SWIPE_UP]: 64
+  Value[GESTURE_SWIPE_DOWN]: 128
+  Value[GESTURE_PINCH_IN]: 256
+  Value[GESTURE_PINCH_OUT]: 512
+Enum 19: CameraMode (5 values)
+  Name: CameraMode
+ Description: 
+  Value[CAMERA_CUSTOM]: 0
+  Value[CAMERA_FREE]: 1
+  Value[CAMERA_ORBITAL]: 2
+  Value[CAMERA_FIRST_PERSON]: 3
+  Value[CAMERA_THIRD_PERSON]: 4
+Enum 20: CameraProjection (2 values)
+  Name: CameraProjection
+ Description: 
+  Value[CAMERA_PERSPECTIVE]: 0
+  Value[CAMERA_ORTHOGRAPHIC]: 1
+Enum 21: NPatchLayout (3 values)
+  Name: NPatchLayout
+ Description: 
+  Value[NPATCH_NINE_PATCH]: 0
+  Value[NPATCH_THREE_PATCH_VERTICAL]: 1
+  Value[NPATCH_THREE_PATCH_HORIZONTAL]: 2
+
+Functions found: 470
+
+Function 001: InitWindow() (3 input parameters)
+  Name: InitWindow
+  Return type: void
+  Description: Initialize window and OpenGL context
+  Param[1]: width (type: int)
+  Param[2]: height (type: int)
+  Param[3]: title (type: const char *)
+Function 002: WindowShouldClose() (0 input parameters)
+  Name: WindowShouldClose
+  Return type: bool
+  Description: Check if KEY_ESCAPE pressed or Close icon pressed
+  No input parameters
+Function 003: CloseWindow() (0 input parameters)
+  Name: CloseWindow
+  Return type: void
+  Description: Close window and unload OpenGL context
+  No input parameters
+Function 004: IsWindowReady() (0 input parameters)
+  Name: IsWindowReady
+  Return type: bool
+  Description: Check if window has been initialized successfully
+  No input parameters
+Function 005: IsWindowFullscreen() (0 input parameters)
+  Name: IsWindowFullscreen
+  Return type: bool
+  Description: Check if window is currently fullscreen
+  No input parameters
+Function 006: IsWindowHidden() (0 input parameters)
+  Name: IsWindowHidden
+  Return type: bool
+  Description: Check if window is currently hidden (only PLATFORM_DESKTOP)
+  No input parameters
+Function 007: IsWindowMinimized() (0 input parameters)
+  Name: IsWindowMinimized
+  Return type: bool
+  Description: Check if window is currently minimized (only PLATFORM_DESKTOP)
+  No input parameters
+Function 008: IsWindowMaximized() (0 input parameters)
+  Name: IsWindowMaximized
+  Return type: bool
+  Description: Check if window is currently maximized (only PLATFORM_DESKTOP)
+  No input parameters
+Function 009: IsWindowFocused() (0 input parameters)
+  Name: IsWindowFocused
+  Return type: bool
+  Description: Check if window is currently focused (only PLATFORM_DESKTOP)
+  No input parameters
+Function 010: IsWindowResized() (0 input parameters)
+  Name: IsWindowResized
+  Return type: bool
+  Description: Check if window has been resized last frame
+  No input parameters
+Function 011: IsWindowState() (1 input parameters)
+  Name: IsWindowState
+  Return type: bool
+  Description: Check if one specific window flag is enabled
+  Param[1]: flag (type: unsigned int)
+Function 012: SetWindowState() (1 input parameters)
+  Name: SetWindowState
+  Return type: void
+  Description: Set window configuration state using flags
+  Param[1]: flags (type: unsigned int)
+Function 013: ClearWindowState() (1 input parameters)
+  Name: ClearWindowState
+  Return type: void
+  Description: Clear window configuration state flags
+  Param[1]: flags (type: unsigned int)
+Function 014: ToggleFullscreen() (0 input parameters)
+  Name: ToggleFullscreen
+  Return type: void
+  Description: Toggle window state: fullscreen/windowed (only PLATFORM_DESKTOP)
+  No input parameters
+Function 015: MaximizeWindow() (0 input parameters)
+  Name: MaximizeWindow
+  Return type: void
+  Description: Set window state: maximized, if resizable (only PLATFORM_DESKTOP)
+  No input parameters
+Function 016: MinimizeWindow() (0 input parameters)
+  Name: MinimizeWindow
+  Return type: void
+  Description: Set window state: minimized, if resizable (only PLATFORM_DESKTOP)
+  No input parameters
+Function 017: RestoreWindow() (0 input parameters)
+  Name: RestoreWindow
+  Return type: void
+  Description: Set window state: not minimized/maximized (only PLATFORM_DESKTOP)
+  No input parameters
+Function 018: SetWindowIcon() (1 input parameters)
+  Name: SetWindowIcon
+  Return type: void
+  Description: Set icon for window (only PLATFORM_DESKTOP)
+  Param[1]: image (type: Image)
+Function 019: SetWindowTitle() (1 input parameters)
+  Name: SetWindowTitle
+  Return type: void
+  Description: Set title for window (only PLATFORM_DESKTOP)
+  Param[1]: title (type: const char *)
+Function 020: SetWindowPosition() (2 input parameters)
+  Name: SetWindowPosition
+  Return type: void
+  Description: Set window position on screen (only PLATFORM_DESKTOP)
+  Param[1]: x (type: int)
+  Param[2]: y (type: int)
+Function 021: SetWindowMonitor() (1 input parameters)
+  Name: SetWindowMonitor
+  Return type: void
+  Description: Set monitor for the current window (fullscreen mode)
+  Param[1]: monitor (type: int)
+Function 022: SetWindowMinSize() (2 input parameters)
+  Name: SetWindowMinSize
+  Return type: void
+  Description: Set window minimum dimensions (for FLAG_WINDOW_RESIZABLE)
+  Param[1]: width (type: int)
+  Param[2]: height (type: int)
+Function 023: SetWindowSize() (2 input parameters)
+  Name: SetWindowSize
+  Return type: void
+  Description: Set window dimensions
+  Param[1]: width (type: int)
+  Param[2]: height (type: int)
+Function 024: GetWindowHandle() (0 input parameters)
+  Name: GetWindowHandle
+  Return type: void *
+  Description: Get native window handle
+  No input parameters
+Function 025: GetScreenWidth() (0 input parameters)
+  Name: GetScreenWidth
+  Return type: int
+  Description: Get current screen width
+  No input parameters
+Function 026: GetScreenHeight() (0 input parameters)
+  Name: GetScreenHeight
+  Return type: int
+  Description: Get current screen height
+  No input parameters
+Function 027: GetMonitorCount() (0 input parameters)
+  Name: GetMonitorCount
+  Return type: int
+  Description: Get number of connected monitors
+  No input parameters
+Function 028: GetCurrentMonitor() (0 input parameters)
+  Name: GetCurrentMonitor
+  Return type: int
+  Description: Get current connected monitor
+  No input parameters
+Function 029: GetMonitorPosition() (1 input parameters)
+  Name: GetMonitorPosition
+  Return type: Vector2
+  Description: Get specified monitor position
+  Param[1]: monitor (type: int)
+Function 030: GetMonitorWidth() (1 input parameters)
+  Name: GetMonitorWidth
+  Return type: int
+  Description: Get specified monitor width (max available by monitor)
+  Param[1]: monitor (type: int)
+Function 031: GetMonitorHeight() (1 input parameters)
+  Name: GetMonitorHeight
+  Return type: int
+  Description: Get specified monitor height (max available by monitor)
+  Param[1]: monitor (type: int)
+Function 032: GetMonitorPhysicalWidth() (1 input parameters)
+  Name: GetMonitorPhysicalWidth
+  Return type: int
+  Description: Get specified monitor physical width in millimetres
+  Param[1]: monitor (type: int)
+Function 033: GetMonitorPhysicalHeight() (1 input parameters)
+  Name: GetMonitorPhysicalHeight
+  Return type: int
+  Description: Get specified monitor physical height in millimetres
+  Param[1]: monitor (type: int)
+Function 034: GetMonitorRefreshRate() (1 input parameters)
+  Name: GetMonitorRefreshRate
+  Return type: int
+  Description: Get specified monitor refresh rate
+  Param[1]: monitor (type: int)
+Function 035: GetWindowPosition() (0 input parameters)
+  Name: GetWindowPosition
+  Return type: Vector2
+  Description: Get window position XY on monitor
+  No input parameters
+Function 036: GetWindowScaleDPI() (0 input parameters)
+  Name: GetWindowScaleDPI
+  Return type: Vector2
+  Description: Get window scale DPI factor
+  No input parameters
+Function 037: GetMonitorName() (1 input parameters)
+  Name: GetMonitorName
+  Return type: const char *
+  Description: Get the human-readable, UTF-8 encoded name of the primary monitor
+  Param[1]: monitor (type: int)
+Function 038: SetClipboardText() (1 input parameters)
+  Name: SetClipboardText
+  Return type: void
+  Description: Set clipboard text content
+  Param[1]: text (type: const char *)
+Function 039: GetClipboardText() (0 input parameters)
+  Name: GetClipboardText
+  Return type: const char *
+  Description: Get clipboard text content
+  No input parameters
+Function 040: ShowCursor() (0 input parameters)
+  Name: ShowCursor
+  Return type: void
+  Description: Shows cursor
+  No input parameters
+Function 041: HideCursor() (0 input parameters)
+  Name: HideCursor
+  Return type: void
+  Description: Hides cursor
+  No input parameters
+Function 042: IsCursorHidden() (0 input parameters)
+  Name: IsCursorHidden
+  Return type: bool
+  Description: Check if cursor is not visible
+  No input parameters
+Function 043: EnableCursor() (0 input parameters)
+  Name: EnableCursor
+  Return type: void
+  Description: Enables cursor (unlock cursor)
+  No input parameters
+Function 044: DisableCursor() (0 input parameters)
+  Name: DisableCursor
+  Return type: void
+  Description: Disables cursor (lock cursor)
+  No input parameters
+Function 045: IsCursorOnScreen() (0 input parameters)
+  Name: IsCursorOnScreen
+  Return type: bool
+  Description: Check if cursor is on the screen
+  No input parameters
+Function 046: ClearBackground() (1 input parameters)
+  Name: ClearBackground
+  Return type: void
+  Description: Set background color (framebuffer clear color)
+  Param[1]: color (type: Color)
+Function 047: BeginDrawing() (0 input parameters)
+  Name: BeginDrawing
+  Return type: void
+  Description: Setup canvas (framebuffer) to start drawing
+  No input parameters
+Function 048: EndDrawing() (0 input parameters)
+  Name: EndDrawing
+  Return type: void
+  Description: End canvas drawing and swap buffers (double buffering)
+  No input parameters
+Function 049: BeginMode2D() (1 input parameters)
+  Name: BeginMode2D
+  Return type: void
+  Description: Begin 2D mode with custom camera (2D)
+  Param[1]: camera (type: Camera2D)
+Function 050: EndMode2D() (0 input parameters)
+  Name: EndMode2D
+  Return type: void
+  Description: Ends 2D mode with custom camera
+  No input parameters
+Function 051: BeginMode3D() (1 input parameters)
+  Name: BeginMode3D
+  Return type: void
+  Description: Begin 3D mode with custom camera (3D)
+  Param[1]: camera (type: Camera3D)
+Function 052: EndMode3D() (0 input parameters)
+  Name: EndMode3D
+  Return type: void
+  Description: Ends 3D mode and returns to default 2D orthographic mode
+  No input parameters
+Function 053: BeginTextureMode() (1 input parameters)
+  Name: BeginTextureMode
+  Return type: void
+  Description: Begin drawing to render texture
+  Param[1]: target (type: RenderTexture2D)
+Function 054: EndTextureMode() (0 input parameters)
+  Name: EndTextureMode
+  Return type: void
+  Description: Ends drawing to render texture
+  No input parameters
+Function 055: BeginShaderMode() (1 input parameters)
+  Name: BeginShaderMode
+  Return type: void
+  Description: Begin custom shader drawing
+  Param[1]: shader (type: Shader)
+Function 056: EndShaderMode() (0 input parameters)
+  Name: EndShaderMode
+  Return type: void
+  Description: End custom shader drawing (use default shader)
+  No input parameters
+Function 057: BeginBlendMode() (1 input parameters)
+  Name: BeginBlendMode
+  Return type: void
+  Description: Begin blending mode (alpha, additive, multiplied, subtract, custom)
+  Param[1]: mode (type: int)
+Function 058: EndBlendMode() (0 input parameters)
+  Name: EndBlendMode
+  Return type: void
+  Description: End blending mode (reset to default: alpha blending)
+  No input parameters
+Function 059: BeginScissorMode() (4 input parameters)
+  Name: BeginScissorMode
+  Return type: void
+  Description: Begin scissor mode (define screen area for following drawing)
+  Param[1]: x (type: int)
+  Param[2]: y (type: int)
+  Param[3]: width (type: int)
+  Param[4]: height (type: int)
+Function 060: EndScissorMode() (0 input parameters)
+  Name: EndScissorMode
+  Return type: void
+  Description: End scissor mode
+  No input parameters
+Function 061: BeginVrStereoMode() (1 input parameters)
+  Name: BeginVrStereoMode
+  Return type: void
+  Description: Begin stereo rendering (requires VR simulator)
+  Param[1]: config (type: VrStereoConfig)
+Function 062: EndVrStereoMode() (0 input parameters)
+  Name: EndVrStereoMode
+  Return type: void
+  Description: End stereo rendering (requires VR simulator)
+  No input parameters
+Function 063: LoadVrStereoConfig() (1 input parameters)
+  Name: LoadVrStereoConfig
+  Return type: VrStereoConfig
+  Description: Load VR stereo config for VR simulator device parameters
+  Param[1]: device (type: VrDeviceInfo)
+Function 064: UnloadVrStereoConfig() (1 input parameters)
+  Name: UnloadVrStereoConfig
+  Return type: void
+  Description: Unload VR stereo config
+  Param[1]: config (type: VrStereoConfig)
+Function 065: LoadShader() (2 input parameters)
+  Name: LoadShader
+  Return type: Shader
+  Description: Load shader from files and bind default locations
+  Param[1]: vsFileName (type: const char *)
+  Param[2]: fsFileName (type: const char *)
+Function 066: LoadShaderFromMemory() (2 input parameters)
+  Name: LoadShaderFromMemory
+  Return type: Shader
+  Description: Load shader from code strings and bind default locations
+  Param[1]: vsCode (type: const char *)
+  Param[2]: fsCode (type: const char *)
+Function 067: GetShaderLocation() (2 input parameters)
+  Name: GetShaderLocation
+  Return type: int
+  Description: Get shader uniform location
+  Param[1]: shader (type: Shader)
+  Param[2]: uniformName (type: const char *)
+Function 068: GetShaderLocationAttrib() (2 input parameters)
+  Name: GetShaderLocationAttrib
+  Return type: int
+  Description: Get shader attribute location
+  Param[1]: shader (type: Shader)
+  Param[2]: attribName (type: const char *)
+Function 069: SetShaderValue() (4 input parameters)
+  Name: SetShaderValue
+  Return type: void
+  Description: Set shader uniform value
+  Param[1]: shader (type: Shader)
+  Param[2]: locIndex (type: int)
+  Param[3]: value (type: const void *)
+  Param[4]: uniformType (type: int)
+Function 070: SetShaderValueV() (5 input parameters)
+  Name: SetShaderValueV
+  Return type: void
+  Description: Set shader uniform value vector
+  Param[1]: shader (type: Shader)
+  Param[2]: locIndex (type: int)
+  Param[3]: value (type: const void *)
+  Param[4]: uniformType (type: int)
+  Param[5]: count (type: int)
+Function 071: SetShaderValueMatrix() (3 input parameters)
+  Name: SetShaderValueMatrix
+  Return type: void
+  Description: Set shader uniform value (matrix 4x4)
+  Param[1]: shader (type: Shader)
+  Param[2]: locIndex (type: int)
+  Param[3]: mat (type: Matrix)
+Function 072: SetShaderValueTexture() (3 input parameters)
+  Name: SetShaderValueTexture
+  Return type: void
+  Description: Set shader uniform value for texture (sampler2d)
+  Param[1]: shader (type: Shader)
+  Param[2]: locIndex (type: int)
+  Param[3]: texture (type: Texture2D)
+Function 073: UnloadShader() (1 input parameters)
+  Name: UnloadShader
+  Return type: void
+  Description: Unload shader from GPU memory (VRAM)
+  Param[1]: shader (type: Shader)
+Function 074: GetMouseRay() (2 input parameters)
+  Name: GetMouseRay
+  Return type: Ray
+  Description: Get a ray trace from mouse position
+  Param[1]: mousePosition (type: Vector2)
+  Param[2]: camera (type: Camera)
+Function 075: GetCameraMatrix() (1 input parameters)
+  Name: GetCameraMatrix
+  Return type: Matrix
+  Description: Get camera transform matrix (view matrix)
+  Param[1]: camera (type: Camera)
+Function 076: GetCameraMatrix2D() (1 input parameters)
+  Name: GetCameraMatrix2D
+  Return type: Matrix
+  Description: Get camera 2d transform matrix
+  Param[1]: camera (type: Camera2D)
+Function 077: GetWorldToScreen() (2 input parameters)
+  Name: GetWorldToScreen
+  Return type: Vector2
+  Description: Get the screen space position for a 3d world space position
+  Param[1]: position (type: Vector3)
+  Param[2]: camera (type: Camera)
+Function 078: GetWorldToScreenEx() (4 input parameters)
+  Name: GetWorldToScreenEx
+  Return type: Vector2
+  Description: Get size position for a 3d world space position
+  Param[1]: position (type: Vector3)
+  Param[2]: camera (type: Camera)
+  Param[3]: width (type: int)
+  Param[4]: height (type: int)
+Function 079: GetWorldToScreen2D() (2 input parameters)
+  Name: GetWorldToScreen2D
+  Return type: Vector2
+  Description: Get the screen space position for a 2d camera world space position
+  Param[1]: position (type: Vector2)
+  Param[2]: camera (type: Camera2D)
+Function 080: GetScreenToWorld2D() (2 input parameters)
+  Name: GetScreenToWorld2D
+  Return type: Vector2
+  Description: Get the world space position for a 2d camera screen space position
+  Param[1]: position (type: Vector2)
+  Param[2]: camera (type: Camera2D)
+Function 081: SetTargetFPS() (1 input parameters)
+  Name: SetTargetFPS
+  Return type: void
+  Description: Set target FPS (maximum)
+  Param[1]: fps (type: int)
+Function 082: GetFPS() (0 input parameters)
+  Name: GetFPS
+  Return type: int
+  Description: Get current FPS
+  No input parameters
+Function 083: GetFrameTime() (0 input parameters)
+  Name: GetFrameTime
+  Return type: float
+  Description: Get time in seconds for last frame drawn (delta time)
+  No input parameters
+Function 084: GetTime() (0 input parameters)
+  Name: GetTime
+  Return type: double
+  Description: Get elapsed time in seconds since InitWindow()
+  No input parameters
+Function 085: GetRandomValue() (2 input parameters)
+  Name: GetRandomValue
+  Return type: int
+  Description: Get a random value between min and max (both included)
+  Param[1]: min (type: int)
+  Param[2]: max (type: int)
+Function 086: TakeScreenshot() (1 input parameters)
+  Name: TakeScreenshot
+  Return type: void
+  Description: Takes a screenshot of current screen (filename extension defines format)
+  Param[1]: fileName (type: const char *)
+Function 087: SetConfigFlags() (1 input parameters)
+  Name: SetConfigFlags
+  Return type: void
+  Description: Setup init configuration flags (view FLAGS)
+  Param[1]: flags (type: unsigned int)
+Function 088: TraceLog() (3 input parameters)
+  Name: TraceLog
+  Return type: void
+  Description: Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR...)
+  Param[1]: logLevel (type: int)
+  Param[2]: text (type: const char *)
+  Param[3]:  (type: )
+Function 089: SetTraceLogLevel() (1 input parameters)
+  Name: SetTraceLogLevel
+  Return type: void
+  Description: Set the current threshold (minimum) log level
+  Param[1]: logLevel (type: int)
+Function 090: MemAlloc() (1 input parameters)
+  Name: MemAlloc
+  Return type: void *
+  Description: Internal memory allocator
+  Param[1]: size (type: int)
+Function 091: MemRealloc() (2 input parameters)
+  Name: MemRealloc
+  Return type: void *
+  Description: Internal memory reallocator
+  Param[1]: ptr (type: void *)
+  Param[2]: size (type: int)
+Function 092: MemFree() (1 input parameters)
+  Name: MemFree
+  Return type: void
+  Description: Internal memory free
+  Param[1]: ptr (type: void *)
+Function 093: SetTraceLogCallback() (1 input parameters)
+  Name: SetTraceLogCallback
+  Return type: void
+  Description: Set custom trace log
+  Param[1]: callback (type: TraceLogCallback)
+Function 094: SetLoadFileDataCallback() (1 input parameters)
+  Name: SetLoadFileDataCallback
+  Return type: void
+  Description: Set custom file binary data loader
+  Param[1]: callback (type: LoadFileDataCallback)
+Function 095: SetSaveFileDataCallback() (1 input parameters)
+  Name: SetSaveFileDataCallback
+  Return type: void
+  Description: Set custom file binary data saver
+  Param[1]: callback (type: SaveFileDataCallback)
+Function 096: SetLoadFileTextCallback() (1 input parameters)
+  Name: SetLoadFileTextCallback
+  Return type: void
+  Description: Set custom file text data loader
+  Param[1]: callback (type: LoadFileTextCallback)
+Function 097: SetSaveFileTextCallback() (1 input parameters)
+  Name: SetSaveFileTextCallback
+  Return type: void
+  Description: Set custom file text data saver
+  Param[1]: callback (type: SaveFileTextCallback)
+Function 098: LoadFileData() (2 input parameters)
+  Name: LoadFileData
+  Return type: unsigned char *
+  Description: Load file data as byte array (read)
+  Param[1]: fileName (type: const char *)
+  Param[2]: bytesRead (type: unsigned int *)
+Function 099: UnloadFileData() (1 input parameters)
+  Name: UnloadFileData
+  Return type: void
+  Description: Unload file data allocated by LoadFileData()
+  Param[1]: data (type: unsigned char *)
+Function 100: SaveFileData() (3 input parameters)
+  Name: SaveFileData
+  Return type: bool
+  Description: Save data to file from byte array (write), returns true on success
+  Param[1]: fileName (type: const char *)
+  Param[2]: data (type: void *)
+  Param[3]: bytesToWrite (type: unsigned int)
+Function 101: LoadFileText() (1 input parameters)
+  Name: LoadFileText
+  Return type: char *
+  Description: Load text data from file (read), returns a '\0' terminated string
+  Param[1]: fileName (type: const char *)
+Function 102: UnloadFileText() (1 input parameters)
+  Name: UnloadFileText
+  Return type: void
+  Description: Unload file text data allocated by LoadFileText()
+  Param[1]: text (type: char *)
+Function 103: SaveFileText() (2 input parameters)
+  Name: SaveFileText
+  Return type: bool
+  Description: Save text data to file (write), string must be '\0' terminated, returns true on success
+  Param[1]: fileName (type: const char *)
+  Param[2]: text (type: char *)
+Function 104: FileExists() (1 input parameters)
+  Name: FileExists
+  Return type: bool
+  Description: Check if file exists
+  Param[1]: fileName (type: const char *)
+Function 105: DirectoryExists() (1 input parameters)
+  Name: DirectoryExists
+  Return type: bool
+  Description: Check if a directory path exists
+  Param[1]: dirPath (type: const char *)
+Function 106: IsFileExtension() (2 input parameters)
+  Name: IsFileExtension
+  Return type: bool
+  Description: Check file extension (including point: .png, .wav)
+  Param[1]: fileName (type: const char *)
+  Param[2]: ext (type: const char *)
+Function 107: GetFileExtension() (1 input parameters)
+  Name: GetFileExtension
+  Return type: const char *
+  Description: Get pointer to extension for a filename string (includes dot: '.png')
+  Param[1]: fileName (type: const char *)
+Function 108: GetFileName() (1 input parameters)
+  Name: GetFileName
+  Return type: const char *
+  Description: Get pointer to filename for a path string
+  Param[1]: filePath (type: const char *)
+Function 109: GetFileNameWithoutExt() (1 input parameters)
+  Name: GetFileNameWithoutExt
+  Return type: const char *
+  Description: Get filename string without extension (uses static string)
+  Param[1]: filePath (type: const char *)
+Function 110: GetDirectoryPath() (1 input parameters)
+  Name: GetDirectoryPath
+  Return type: const char *
+  Description: Get full path for a given fileName with path (uses static string)
+  Param[1]: filePath (type: const char *)
+Function 111: GetPrevDirectoryPath() (1 input parameters)
+  Name: GetPrevDirectoryPath
+  Return type: const char *
+  Description: Get previous directory path for a given path (uses static string)
+  Param[1]: dirPath (type: const char *)
+Function 112: GetWorkingDirectory() (0 input parameters)
+  Name: GetWorkingDirectory
+  Return type: const char *
+  Description: Get current working directory (uses static string)
+  No input parameters
+Function 113: GetDirectoryFiles() (2 input parameters)
+  Name: GetDirectoryFiles
+  Return type: char **
+  Description: Get filenames in a directory path (memory should be freed)
+  Param[1]: dirPath (type: const char *)
+  Param[2]: count (type: int *)
+Function 114: ClearDirectoryFiles() (0 input parameters)
+  Name: ClearDirectoryFiles
+  Return type: void
+  Description: Clear directory files paths buffers (free memory)
+  No input parameters
+Function 115: ChangeDirectory() (1 input parameters)
+  Name: ChangeDirectory
+  Return type: bool
+  Description: Change working directory, return true on success
+  Param[1]: dir (type: const char *)
+Function 116: IsFileDropped() (0 input parameters)
+  Name: IsFileDropped
+  Return type: bool
+  Description: Check if a file has been dropped into window
+  No input parameters
+Function 117: GetDroppedFiles() (1 input parameters)
+  Name: GetDroppedFiles
+  Return type: char **
+  Description: Get dropped files names (memory should be freed)
+  Param[1]: count (type: int *)
+Function 118: ClearDroppedFiles() (0 input parameters)
+  Name: ClearDroppedFiles
+  Return type: void
+  Description: Clear dropped files paths buffer (free memory)
+  No input parameters
+Function 119: GetFileModTime() (1 input parameters)
+  Name: GetFileModTime
+  Return type: long
+  Description: Get file modification time (last write time)
+  Param[1]: fileName (type: const char *)
+Function 120: CompressData() (3 input parameters)
+  Name: CompressData
+  Return type: unsigned char *
+  Description: Compress data (DEFLATE algorithm)
+  Param[1]: data (type: unsigned char *)
+  Param[2]: dataLength (type: int)
+  Param[3]: compDataLength (type: int *)
+Function 121: DecompressData() (3 input parameters)
+  Name: DecompressData
+  Return type: unsigned char *
+  Description: Decompress data (DEFLATE algorithm)
+  Param[1]: compData (type: unsigned char *)
+  Param[2]: compDataLength (type: int)
+  Param[3]: dataLength (type: int *)
+Function 122: SaveStorageValue() (2 input parameters)
+  Name: SaveStorageValue
+  Return type: bool
+  Description: Save integer value to storage file (to defined position), returns true on success
+  Param[1]: position (type: unsigned int)
+  Param[2]: value (type: int)
+Function 123: LoadStorageValue() (1 input parameters)
+  Name: LoadStorageValue
+  Return type: int
+  Description: Load integer value from storage file (from defined position)
+  Param[1]: position (type: unsigned int)
+Function 124: OpenURL() (1 input parameters)
+  Name: OpenURL
+  Return type: void
+  Description: Open URL with default system browser (if available)
+  Param[1]: url (type: const char *)
+Function 125: IsKeyPressed() (1 input parameters)
+  Name: IsKeyPressed
+  Return type: bool
+  Description: Check if a key has been pressed once
+  Param[1]: key (type: int)
+Function 126: IsKeyDown() (1 input parameters)
+  Name: IsKeyDown
+  Return type: bool
+  Description: Check if a key is being pressed
+  Param[1]: key (type: int)
+Function 127: IsKeyReleased() (1 input parameters)
+  Name: IsKeyReleased
+  Return type: bool
+  Description: Check if a key has been released once
+  Param[1]: key (type: int)
+Function 128: IsKeyUp() (1 input parameters)
+  Name: IsKeyUp
+  Return type: bool
+  Description: Check if a key is NOT being pressed
+  Param[1]: key (type: int)
+Function 129: SetExitKey() (1 input parameters)
+  Name: SetExitKey
+  Return type: void
+  Description: Set a custom key to exit program (default is ESC)
+  Param[1]: key (type: int)
+Function 130: GetKeyPressed() (0 input parameters)
+  Name: GetKeyPressed
+  Return type: int
+  Description: Get key pressed (keycode), call it multiple times for keys queued
+  No input parameters
+Function 131: GetCharPressed() (0 input parameters)
+  Name: GetCharPressed
+  Return type: int
+  Description: Get char pressed (unicode), call it multiple times for chars queued
+  No input parameters
+Function 132: IsGamepadAvailable() (1 input parameters)
+  Name: IsGamepadAvailable
+  Return type: bool
+  Description: Check if a gamepad is available
+  Param[1]: gamepad (type: int)
+Function 133: IsGamepadName() (2 input parameters)
+  Name: IsGamepadName
+  Return type: bool
+  Description: Check gamepad name (if available)
+  Param[1]: gamepad (type: int)
+  Param[2]: name (type: const char *)
+Function 134: GetGamepadName() (1 input parameters)
+  Name: GetGamepadName
+  Return type: const char *
+  Description: Get gamepad internal name id
+  Param[1]: gamepad (type: int)
+Function 135: IsGamepadButtonPressed() (2 input parameters)
+  Name: IsGamepadButtonPressed
+  Return type: bool
+  Description: Check if a gamepad button has been pressed once
+  Param[1]: gamepad (type: int)
+  Param[2]: button (type: int)
+Function 136: IsGamepadButtonDown() (2 input parameters)
+  Name: IsGamepadButtonDown
+  Return type: bool
+  Description: Check if a gamepad button is being pressed
+  Param[1]: gamepad (type: int)
+  Param[2]: button (type: int)
+Function 137: IsGamepadButtonReleased() (2 input parameters)
+  Name: IsGamepadButtonReleased
+  Return type: bool
+  Description: Check if a gamepad button has been released once
+  Param[1]: gamepad (type: int)
+  Param[2]: button (type: int)
+Function 138: IsGamepadButtonUp() (2 input parameters)
+  Name: IsGamepadButtonUp
+  Return type: bool
+  Description: Check if a gamepad button is NOT being pressed
+  Param[1]: gamepad (type: int)
+  Param[2]: button (type: int)
+Function 139: GetGamepadButtonPressed() (0 input parameters)
+  Name: GetGamepadButtonPressed
+  Return type: int
+  Description: Get the last gamepad button pressed
+  No input parameters
+Function 140: GetGamepadAxisCount() (1 input parameters)
+  Name: GetGamepadAxisCount
+  Return type: int
+  Description: Get gamepad axis count for a gamepad
+  Param[1]: gamepad (type: int)
+Function 141: GetGamepadAxisMovement() (2 input parameters)
+  Name: GetGamepadAxisMovement
+  Return type: float
+  Description: Get axis movement value for a gamepad axis
+  Param[1]: gamepad (type: int)
+  Param[2]: axis (type: int)
+Function 142: SetGamepadMappings() (1 input parameters)
+  Name: SetGamepadMappings
+  Return type: int
+  Description: Set internal gamepad mappings (SDL_GameControllerDB)
+  Param[1]: mappings (type: const char *)
+Function 143: IsMouseButtonPressed() (1 input parameters)
+  Name: IsMouseButtonPressed
+  Return type: bool
+  Description: Check if a mouse button has been pressed once
+  Param[1]: button (type: int)
+Function 144: IsMouseButtonDown() (1 input parameters)
+  Name: IsMouseButtonDown
+  Return type: bool
+  Description: Check if a mouse button is being pressed
+  Param[1]: button (type: int)
+Function 145: IsMouseButtonReleased() (1 input parameters)
+  Name: IsMouseButtonReleased
+  Return type: bool
+  Description: Check if a mouse button has been released once
+  Param[1]: button (type: int)
+Function 146: IsMouseButtonUp() (1 input parameters)
+  Name: IsMouseButtonUp
+  Return type: bool
+  Description: Check if a mouse button is NOT being pressed
+  Param[1]: button (type: int)
+Function 147: GetMouseX() (0 input parameters)
+  Name: GetMouseX
+  Return type: int
+  Description: Get mouse position X
+  No input parameters
+Function 148: GetMouseY() (0 input parameters)
+  Name: GetMouseY
+  Return type: int
+  Description: Get mouse position Y
+  No input parameters
+Function 149: GetMousePosition() (0 input parameters)
+  Name: GetMousePosition
+  Return type: Vector2
+  Description: Get mouse position XY
+  No input parameters
+Function 150: SetMousePosition() (2 input parameters)
+  Name: SetMousePosition
+  Return type: void
+  Description: Set mouse position XY
+  Param[1]: x (type: int)
+  Param[2]: y (type: int)
+Function 151: SetMouseOffset() (2 input parameters)
+  Name: SetMouseOffset
+  Return type: void
+  Description: Set mouse offset
+  Param[1]: offsetX (type: int)
+  Param[2]: offsetY (type: int)
+Function 152: SetMouseScale() (2 input parameters)
+  Name: SetMouseScale
+  Return type: void
+  Description: Set mouse scaling
+  Param[1]: scaleX (type: float)
+  Param[2]: scaleY (type: float)
+Function 153: GetMouseWheelMove() (0 input parameters)
+  Name: GetMouseWheelMove
+  Return type: float
+  Description: Get mouse wheel movement Y
+  No input parameters
+Function 154: SetMouseCursor() (1 input parameters)
+  Name: SetMouseCursor
+  Return type: void
+  Description: Set mouse cursor
+  Param[1]: cursor (type: int)
+Function 155: GetTouchX() (0 input parameters)
+  Name: GetTouchX
+  Return type: int
+  Description: Get touch position X for touch point 0 (relative to screen size)
+  No input parameters
+Function 156: GetTouchY() (0 input parameters)
+  Name: GetTouchY
+  Return type: int
+  Description: Get touch position Y for touch point 0 (relative to screen size)
+  No input parameters
+Function 157: GetTouchPosition() (1 input parameters)
+  Name: GetTouchPosition
+  Return type: Vector2
+  Description: Get touch position XY for a touch point index (relative to screen size)
+  Param[1]: index (type: int)
+Function 158: SetGesturesEnabled() (1 input parameters)
+  Name: SetGesturesEnabled
+  Return type: void
+  Description: Enable a set of gestures using flags
+  Param[1]: flags (type: unsigned int)
+Function 159: IsGestureDetected() (1 input parameters)
+  Name: IsGestureDetected
+  Return type: bool
+  Description: Check if a gesture have been detected
+  Param[1]: gesture (type: int)
+Function 160: GetGestureDetected() (0 input parameters)
+  Name: GetGestureDetected
+  Return type: int
+  Description: Get latest detected gesture
+  No input parameters
+Function 161: GetTouchPointsCount() (0 input parameters)
+  Name: GetTouchPointsCount
+  Return type: int
+  Description: Get touch points count
+  No input parameters
+Function 162: GetGestureHoldDuration() (0 input parameters)
+  Name: GetGestureHoldDuration
+  Return type: float
+  Description: Get gesture hold time in milliseconds
+  No input parameters
+Function 163: GetGestureDragVector() (0 input parameters)
+  Name: GetGestureDragVector
+  Return type: Vector2
+  Description: Get gesture drag vector
+  No input parameters
+Function 164: GetGestureDragAngle() (0 input parameters)
+  Name: GetGestureDragAngle
+  Return type: float
+  Description: Get gesture drag angle
+  No input parameters
+Function 165: GetGesturePinchVector() (0 input parameters)
+  Name: GetGesturePinchVector
+  Return type: Vector2
+  Description: Get gesture pinch delta
+  No input parameters
+Function 166: GetGesturePinchAngle() (0 input parameters)
+  Name: GetGesturePinchAngle
+  Return type: float
+  Description: Get gesture pinch angle
+  No input parameters
+Function 167: SetCameraMode() (2 input parameters)
+  Name: SetCameraMode
+  Return type: void
+  Description: Set camera mode (multiple camera modes available)
+  Param[1]: camera (type: Camera)
+  Param[2]: mode (type: int)
+Function 168: UpdateCamera() (1 input parameters)
+  Name: UpdateCamera
+  Return type: void
+  Description: Update camera position for selected mode
+  Param[1]: camera (type: Camera *)
+Function 169: SetCameraPanControl() (1 input parameters)
+  Name: SetCameraPanControl
+  Return type: void
+  Description: Set camera pan key to combine with mouse movement (free camera)
+  Param[1]: keyPan (type: int)
+Function 170: SetCameraAltControl() (1 input parameters)
+  Name: SetCameraAltControl
+  Return type: void
+  Description: Set camera alt key to combine with mouse movement (free camera)
+  Param[1]: keyAlt (type: int)
+Function 171: SetCameraSmoothZoomControl() (1 input parameters)
+  Name: SetCameraSmoothZoomControl
+  Return type: void
+  Description: Set camera smooth zoom key to combine with mouse (free camera)
+  Param[1]: keySmoothZoom (type: int)
+Function 172: SetCameraMoveControls() (6 input parameters)
+  Name: SetCameraMoveControls
+  Return type: void
+  Description: Set camera move controls (1st person and 3rd person cameras)
+  Param[1]: keyFront (type: int)
+  Param[2]: keyBack (type: int)
+  Param[3]: keyRight (type: int)
+  Param[4]: keyLeft (type: int)
+  Param[5]: keyUp (type: int)
+  Param[6]: keyDown (type: int)
+Function 173: SetShapesTexture() (2 input parameters)
+  Name: SetShapesTexture
+  Return type: void
+  Description: Set texture and rectangle to be used on shapes drawing
+  Param[1]: texture (type: Texture2D)
+  Param[2]: source (type: Rectangle)
+Function 174: DrawPixel() (3 input parameters)
+  Name: DrawPixel
+  Return type: void
+  Description: Draw a pixel
+  Param[1]: posX (type: int)
+  Param[2]: posY (type: int)
+  Param[3]: color (type: Color)
+Function 175: DrawPixelV() (2 input parameters)
+  Name: DrawPixelV
+  Return type: void
+  Description: Draw a pixel (Vector version)
+  Param[1]: position (type: Vector2)
+  Param[2]: color (type: Color)
+Function 176: DrawLine() (5 input parameters)
+  Name: DrawLine
+  Return type: void
+  Description: Draw a line
+  Param[1]: startPosX (type: int)
+  Param[2]: startPosY (type: int)
+  Param[3]: endPosX (type: int)
+  Param[4]: endPosY (type: int)
+  Param[5]: color (type: Color)
+Function 177: DrawLineV() (3 input parameters)
+  Name: DrawLineV
+  Return type: void
+  Description: Draw a line (Vector version)
+  Param[1]: startPos (type: Vector2)
+  Param[2]: endPos (type: Vector2)
+  Param[3]: color (type: Color)
+Function 178: DrawLineEx() (4 input parameters)
+  Name: DrawLineEx
+  Return type: void
+  Description: Draw a line defining thickness
+  Param[1]: startPos (type: Vector2)
+  Param[2]: endPos (type: Vector2)
+  Param[3]: thick (type: float)
+  Param[4]: color (type: Color)
+Function 179: DrawLineBezier() (4 input parameters)
+  Name: DrawLineBezier
+  Return type: void
+  Description: Draw a line using cubic-bezier curves in-out
+  Param[1]: startPos (type: Vector2)
+  Param[2]: endPos (type: Vector2)
+  Param[3]: thick (type: float)
+  Param[4]: color (type: Color)
+Function 180: DrawLineBezierQuad() (5 input parameters)
+  Name: DrawLineBezierQuad
+  Return type: void
+  Description: raw line using quadratic bezier curves with a control point
+  Param[1]: startPos (type: Vector2)
+  Param[2]: endPos (type: Vector2)
+  Param[3]: controlPos (type: Vector2)
+  Param[4]: thick (type: float)
+  Param[5]: color (type: Color)
+Function 181: DrawLineStrip() (3 input parameters)
+  Name: DrawLineStrip
+  Return type: void
+  Description: Draw lines sequence
+  Param[1]: points (type: Vector2 *)
+  Param[2]: pointsCount (type: int)
+  Param[3]: color (type: Color)
+Function 182: DrawCircle() (4 input parameters)
+  Name: DrawCircle
+  Return type: void
+  Description: Draw a color-filled circle
+  Param[1]: centerX (type: int)
+  Param[2]: centerY (type: int)
+  Param[3]: radius (type: float)
+  Param[4]: color (type: Color)
+Function 183: DrawCircleSector() (6 input parameters)
+  Name: DrawCircleSector
+  Return type: void
+  Description: Draw a piece of a circle
+  Param[1]: center (type: Vector2)
+  Param[2]: radius (type: float)
+  Param[3]: startAngle (type: float)
+  Param[4]: endAngle (type: float)
+  Param[5]: segments (type: int)
+  Param[6]: color (type: Color)
+Function 184: DrawCircleSectorLines() (6 input parameters)
+  Name: DrawCircleSectorLines
+  Return type: void
+  Description: Draw circle sector outline
+  Param[1]: center (type: Vector2)
+  Param[2]: radius (type: float)
+  Param[3]: startAngle (type: float)
+  Param[4]: endAngle (type: float)
+  Param[5]: segments (type: int)
+  Param[6]: color (type: Color)
+Function 185: DrawCircleGradient() (5 input parameters)
+  Name: DrawCircleGradient
+  Return type: void
+  Description: Draw a gradient-filled circle
+  Param[1]: centerX (type: int)
+  Param[2]: centerY (type: int)
+  Param[3]: radius (type: float)
+  Param[4]: color1 (type: Color)
+  Param[5]: color2 (type: Color)
+Function 186: DrawCircleV() (3 input parameters)
+  Name: DrawCircleV
+  Return type: void
+  Description: Draw a color-filled circle (Vector version)
+  Param[1]: center (type: Vector2)
+  Param[2]: radius (type: float)
+  Param[3]: color (type: Color)
+Function 187: DrawCircleLines() (4 input parameters)
+  Name: DrawCircleLines
+  Return type: void
+  Description: Draw circle outline
+  Param[1]: centerX (type: int)
+  Param[2]: centerY (type: int)
+  Param[3]: radius (type: float)
+  Param[4]: color (type: Color)
+Function 188: DrawEllipse() (5 input parameters)
+  Name: DrawEllipse
+  Return type: void
+  Description: Draw ellipse
+  Param[1]: centerX (type: int)
+  Param[2]: centerY (type: int)
+  Param[3]: radiusH (type: float)
+  Param[4]: radiusV (type: float)
+  Param[5]: color (type: Color)
+Function 189: DrawEllipseLines() (5 input parameters)
+  Name: DrawEllipseLines
+  Return type: void
+  Description: Draw ellipse outline
+  Param[1]: centerX (type: int)
+  Param[2]: centerY (type: int)
+  Param[3]: radiusH (type: float)
+  Param[4]: radiusV (type: float)
+  Param[5]: color (type: Color)
+Function 190: DrawRing() (7 input parameters)
+  Name: DrawRing
+  Return type: void
+  Description: Draw ring
+  Param[1]: center (type: Vector2)
+  Param[2]: innerRadius (type: float)
+  Param[3]: outerRadius (type: float)
+  Param[4]: startAngle (type: float)
+  Param[5]: endAngle (type: float)
+  Param[6]: segments (type: int)
+  Param[7]: color (type: Color)
+Function 191: DrawRingLines() (7 input parameters)
+  Name: DrawRingLines
+  Return type: void
+  Description: Draw ring outline
+  Param[1]: center (type: Vector2)
+  Param[2]: innerRadius (type: float)
+  Param[3]: outerRadius (type: float)
+  Param[4]: startAngle (type: float)
+  Param[5]: endAngle (type: float)
+  Param[6]: segments (type: int)
+  Param[7]: color (type: Color)
+Function 192: DrawRectangle() (5 input parameters)
+  Name: DrawRectangle
+  Return type: void
+  Description: Draw a color-filled rectangle
+  Param[1]: posX (type: int)
+  Param[2]: posY (type: int)
+  Param[3]: width (type: int)
+  Param[4]: height (type: int)
+  Param[5]: color (type: Color)
+Function 193: DrawRectangleV() (3 input parameters)
+  Name: DrawRectangleV
+  Return type: void
+  Description: Draw a color-filled rectangle (Vector version)
+  Param[1]: position (type: Vector2)
+  Param[2]: size (type: Vector2)
+  Param[3]: color (type: Color)
+Function 194: DrawRectangleRec() (2 input parameters)
+  Name: DrawRectangleRec
+  Return type: void
+  Description: Draw a color-filled rectangle
+  Param[1]: rec (type: Rectangle)
+  Param[2]: color (type: Color)
+Function 195: DrawRectanglePro() (4 input parameters)
+  Name: DrawRectanglePro
+  Return type: void
+  Description: Draw a color-filled rectangle with pro parameters
+  Param[1]: rec (type: Rectangle)
+  Param[2]: origin (type: Vector2)
+  Param[3]: rotation (type: float)
+  Param[4]: color (type: Color)
+Function 196: DrawRectangleGradientV() (6 input parameters)
+  Name: DrawRectangleGradientV
+  Return type: void
+  Description: Draw a vertical-gradient-filled rectangle
+  Param[1]: posX (type: int)
+  Param[2]: posY (type: int)
+  Param[3]: width (type: int)
+  Param[4]: height (type: int)
+  Param[5]: color1 (type: Color)
+  Param[6]: color2 (type: Color)
+Function 197: DrawRectangleGradientH() (6 input parameters)
+  Name: DrawRectangleGradientH
+  Return type: void
+  Description: Draw a horizontal-gradient-filled rectangle
+  Param[1]: posX (type: int)
+  Param[2]: posY (type: int)
+  Param[3]: width (type: int)
+  Param[4]: height (type: int)
+  Param[5]: color1 (type: Color)
+  Param[6]: color2 (type: Color)
+Function 198: DrawRectangleGradientEx() (5 input parameters)
+  Name: DrawRectangleGradientEx
+  Return type: void
+  Description: Draw a gradient-filled rectangle with custom vertex colors
+  Param[1]: rec (type: Rectangle)
+  Param[2]: col1 (type: Color)
+  Param[3]: col2 (type: Color)
+  Param[4]: col3 (type: Color)
+  Param[5]: col4 (type: Color)
+Function 199: DrawRectangleLines() (5 input parameters)
+  Name: DrawRectangleLines
+  Return type: void
+  Description: Draw rectangle outline
+  Param[1]: posX (type: int)
+  Param[2]: posY (type: int)
+  Param[3]: width (type: int)
+  Param[4]: height (type: int)
+  Param[5]: color (type: Color)
+Function 200: DrawRectangleLinesEx() (3 input parameters)
+  Name: DrawRectangleLinesEx
+  Return type: void
+  Description: Draw rectangle outline with extended parameters
+  Param[1]: rec (type: Rectangle)
+  Param[2]: lineThick (type: float)
+  Param[3]: color (type: Color)
+Function 201: DrawRectangleRounded() (4 input parameters)
+  Name: DrawRectangleRounded
+  Return type: void
+  Description: Draw rectangle with rounded edges
+  Param[1]: rec (type: Rectangle)
+  Param[2]: roundness (type: float)
+  Param[3]: segments (type: int)
+  Param[4]: color (type: Color)
+Function 202: DrawRectangleRoundedLines() (5 input parameters)
+  Name: DrawRectangleRoundedLines
+  Return type: void
+  Description: Draw rectangle with rounded edges outline
+  Param[1]: rec (type: Rectangle)
+  Param[2]: roundness (type: float)
+  Param[3]: segments (type: int)
+  Param[4]: lineThick (type: float)
+  Param[5]: color (type: Color)
+Function 203: DrawTriangle() (4 input parameters)
+  Name: DrawTriangle
+  Return type: void
+  Description: Draw a color-filled triangle (vertex in counter-clockwise order!)
+  Param[1]: v1 (type: Vector2)
+  Param[2]: v2 (type: Vector2)
+  Param[3]: v3 (type: Vector2)
+  Param[4]: color (type: Color)
+Function 204: DrawTriangleLines() (4 input parameters)
+  Name: DrawTriangleLines
+  Return type: void
+  Description: Draw triangle outline (vertex in counter-clockwise order!)
+  Param[1]: v1 (type: Vector2)
+  Param[2]: v2 (type: Vector2)
+  Param[3]: v3 (type: Vector2)
+  Param[4]: color (type: Color)
+Function 205: DrawTriangleFan() (3 input parameters)
+  Name: DrawTriangleFan
+  Return type: void
+  Description: Draw a triangle fan defined by points (first vertex is the center)
+  Param[1]: points (type: Vector2 *)
+  Param[2]: pointsCount (type: int)
+  Param[3]: color (type: Color)
+Function 206: DrawTriangleStrip() (3 input parameters)
+  Name: DrawTriangleStrip
+  Return type: void
+  Description: Draw a triangle strip defined by points
+  Param[1]: points (type: Vector2 *)
+  Param[2]: pointsCount (type: int)
+  Param[3]: color (type: Color)
+Function 207: DrawPoly() (5 input parameters)
+  Name: DrawPoly
+  Return type: void
+  Description: Draw a regular polygon (Vector version)
+  Param[1]: center (type: Vector2)
+  Param[2]: sides (type: int)
+  Param[3]: radius (type: float)
+  Param[4]: rotation (type: float)
+  Param[5]: color (type: Color)
+Function 208: DrawPolyLines() (5 input parameters)
+  Name: DrawPolyLines
+  Return type: void
+  Description: Draw a polygon outline of n sides
+  Param[1]: center (type: Vector2)
+  Param[2]: sides (type: int)
+  Param[3]: radius (type: float)
+  Param[4]: rotation (type: float)
+  Param[5]: color (type: Color)
+Function 209: DrawPolyLinesEx() (6 input parameters)
+  Name: DrawPolyLinesEx
+  Return type: void
+  Description: Draw a polygon outline of n sides with extended parameters
+  Param[1]: center (type: Vector2)
+  Param[2]: sides (type: int)
+  Param[3]: radius (type: float)
+  Param[4]: rotation (type: float)
+  Param[5]: lineThick (type: float)
+  Param[6]: color (type: Color)
+Function 210: CheckCollisionRecs() (2 input parameters)
+  Name: CheckCollisionRecs
+  Return type: bool
+  Description: Check collision between two rectangles
+  Param[1]: rec1 (type: Rectangle)
+  Param[2]: rec2 (type: Rectangle)
+Function 211: CheckCollisionCircles() (4 input parameters)
+  Name: CheckCollisionCircles
+  Return type: bool
+  Description: Check collision between two circles
+  Param[1]: center1 (type: Vector2)
+  Param[2]: radius1 (type: float)
+  Param[3]: center2 (type: Vector2)
+  Param[4]: radius2 (type: float)
+Function 212: CheckCollisionCircleRec() (3 input parameters)
+  Name: CheckCollisionCircleRec
+  Return type: bool
+  Description: Check collision between circle and rectangle
+  Param[1]: center (type: Vector2)
+  Param[2]: radius (type: float)
+  Param[3]: rec (type: Rectangle)
+Function 213: CheckCollisionPointRec() (2 input parameters)
+  Name: CheckCollisionPointRec
+  Return type: bool
+  Description: Check if point is inside rectangle
+  Param[1]: point (type: Vector2)
+  Param[2]: rec (type: Rectangle)
+Function 214: CheckCollisionPointCircle() (3 input parameters)
+  Name: CheckCollisionPointCircle
+  Return type: bool
+  Description: Check if point is inside circle
+  Param[1]: point (type: Vector2)
+  Param[2]: center (type: Vector2)
+  Param[3]: radius (type: float)
+Function 215: CheckCollisionPointTriangle() (4 input parameters)
+  Name: CheckCollisionPointTriangle
+  Return type: bool
+  Description: Check if point is inside a triangle
+  Param[1]: point (type: Vector2)
+  Param[2]: p1 (type: Vector2)
+  Param[3]: p2 (type: Vector2)
+  Param[4]: p3 (type: Vector2)
+Function 216: CheckCollisionLines() (5 input parameters)
+  Name: CheckCollisionLines
+  Return type: bool
+  Description: Check the collision between two lines defined by two points each, returns collision point by reference
+  Param[1]: startPos1 (type: Vector2)
+  Param[2]: endPos1 (type: Vector2)
+  Param[3]: startPos2 (type: Vector2)
+  Param[4]: endPos2 (type: Vector2)
+  Param[5]: collisionPoint (type: Vector2 *)
+Function 217: GetCollisionRec() (2 input parameters)
+  Name: GetCollisionRec
+  Return type: Rectangle
+  Description: Get collision rectangle for two rectangles collision
+  Param[1]: rec1 (type: Rectangle)
+  Param[2]: rec2 (type: Rectangle)
+Function 218: LoadImage() (1 input parameters)
+  Name: LoadImage
+  Return type: Image
+  Description: Load image from file into CPU memory (RAM)
+  Param[1]: fileName (type: const char *)
+Function 219: LoadImageRaw() (5 input parameters)
+  Name: LoadImageRaw
+  Return type: Image
+  Description: Load image from RAW file data
+  Param[1]: fileName (type: const char *)
+  Param[2]: width (type: int)
+  Param[3]: height (type: int)
+  Param[4]: format (type: int)
+  Param[5]: headerSize (type: int)
+Function 220: LoadImageAnim() (2 input parameters)
+  Name: LoadImageAnim
+  Return type: Image
+  Description: Load image sequence from file (frames appended to image.data)
+  Param[1]: fileName (type: const char *)
+  Param[2]: frames (type: int *)
+Function 221: LoadImageFromMemory() (3 input parameters)
+  Name: LoadImageFromMemory
+  Return type: Image
+  Description: Load image from memory buffer, fileType refers to extension: i.e. '.png'
+  Param[1]: fileType (type: const char *)
+  Param[2]: fileData (type: const unsigned char *)
+  Param[3]: dataSize (type: int)
+Function 222: UnloadImage() (1 input parameters)
+  Name: UnloadImage
+  Return type: void
+  Description: Unload image from CPU memory (RAM)
+  Param[1]: image (type: Image)
+Function 223: ExportImage() (2 input parameters)
+  Name: ExportImage
+  Return type: bool
+  Description: Export image data to file, returns true on success
+  Param[1]: image (type: Image)
+  Param[2]: fileName (type: const char *)
+Function 224: ExportImageAsCode() (2 input parameters)
+  Name: ExportImageAsCode
+  Return type: bool
+  Description: Export image as code file defining an array of bytes, returns true on success
+  Param[1]: image (type: Image)
+  Param[2]: fileName (type: const char *)
+Function 225: GenImageColor() (3 input parameters)
+  Name: GenImageColor
+  Return type: Image
+  Description: Generate image: plain color
+  Param[1]: width (type: int)
+  Param[2]: height (type: int)
+  Param[3]: color (type: Color)
+Function 226: GenImageGradientV() (4 input parameters)
+  Name: GenImageGradientV
+  Return type: Image
+  Description: Generate image: vertical gradient
+  Param[1]: width (type: int)
+  Param[2]: height (type: int)
+  Param[3]: top (type: Color)
+  Param[4]: bottom (type: Color)
+Function 227: GenImageGradientH() (4 input parameters)
+  Name: GenImageGradientH
+  Return type: Image
+  Description: Generate image: horizontal gradient
+  Param[1]: width (type: int)
+  Param[2]: height (type: int)
+  Param[3]: left (type: Color)
+  Param[4]: right (type: Color)
+Function 228: GenImageGradientRadial() (5 input parameters)
+  Name: GenImageGradientRadial
+  Return type: Image
+  Description: Generate image: radial gradient
+  Param[1]: width (type: int)
+  Param[2]: height (type: int)
+  Param[3]: density (type: float)
+  Param[4]: inner (type: Color)
+  Param[5]: outer (type: Color)
+Function 229: GenImageChecked() (6 input parameters)
+  Name: GenImageChecked
+  Return type: Image
+  Description: Generate image: checked
+  Param[1]: width (type: int)
+  Param[2]: height (type: int)
+  Param[3]: checksX (type: int)
+  Param[4]: checksY (type: int)
+  Param[5]: col1 (type: Color)
+  Param[6]: col2 (type: Color)
+Function 230: GenImageWhiteNoise() (3 input parameters)
+  Name: GenImageWhiteNoise
+  Return type: Image
+  Description: Generate image: white noise
+  Param[1]: width (type: int)
+  Param[2]: height (type: int)
+  Param[3]: factor (type: float)
+Function 231: GenImagePerlinNoise() (5 input parameters)
+  Name: GenImagePerlinNoise
+  Return type: Image
+  Description: Generate image: perlin noise
+  Param[1]: width (type: int)
+  Param[2]: height (type: int)
+  Param[3]: offsetX (type: int)
+  Param[4]: offsetY (type: int)
+  Param[5]: scale (type: float)
+Function 232: GenImageCellular() (3 input parameters)
+  Name: GenImageCellular
+  Return type: Image
+  Description: Generate image: cellular algorithm. Bigger tileSize means bigger cells
+  Param[1]: width (type: int)
+  Param[2]: height (type: int)
+  Param[3]: tileSize (type: int)
+Function 233: ImageCopy() (1 input parameters)
+  Name: ImageCopy
+  Return type: Image
+  Description: Create an image duplicate (useful for transformations)
+  Param[1]: image (type: Image)
+Function 234: ImageFromImage() (2 input parameters)
+  Name: ImageFromImage
+  Return type: Image
+  Description: Create an image from another image piece
+  Param[1]: image (type: Image)
+  Param[2]: rec (type: Rectangle)
+Function 235: ImageText() (3 input parameters)
+  Name: ImageText
+  Return type: Image
+  Description: Create an image from text (default font)
+  Param[1]: text (type: const char *)
+  Param[2]: fontSize (type: int)
+  Param[3]: color (type: Color)
+Function 236: ImageTextEx() (5 input parameters)
+  Name: ImageTextEx
+  Return type: Image
+  Description: Create an image from text (custom sprite font)
+  Param[1]: font (type: Font)
+  Param[2]: text (type: const char *)
+  Param[3]: fontSize (type: float)
+  Param[4]: spacing (type: float)
+  Param[5]: tint (type: Color)
+Function 237: ImageFormat() (2 input parameters)
+  Name: ImageFormat
+  Return type: void
+  Description: Convert image data to desired format
+  Param[1]: image (type: Image *)
+  Param[2]: newFormat (type: int)
+Function 238: ImageToPOT() (2 input parameters)
+  Name: ImageToPOT
+  Return type: void
+  Description: Convert image to POT (power-of-two)
+  Param[1]: image (type: Image *)
+  Param[2]: fill (type: Color)
+Function 239: ImageCrop() (2 input parameters)
+  Name: ImageCrop
+  Return type: void
+  Description: Crop an image to a defined rectangle
+  Param[1]: image (type: Image *)
+  Param[2]: crop (type: Rectangle)
+Function 240: ImageAlphaCrop() (2 input parameters)
+  Name: ImageAlphaCrop
+  Return type: void
+  Description: Crop image depending on alpha value
+  Param[1]: image (type: Image *)
+  Param[2]: threshold (type: float)
+Function 241: ImageAlphaClear() (3 input parameters)
+  Name: ImageAlphaClear
+  Return type: void
+  Description: Clear alpha channel to desired color
+  Param[1]: image (type: Image *)
+  Param[2]: color (type: Color)
+  Param[3]: threshold (type: float)
+Function 242: ImageAlphaMask() (2 input parameters)
+  Name: ImageAlphaMask
+  Return type: void
+  Description: Apply alpha mask to image
+  Param[1]: image (type: Image *)
+  Param[2]: alphaMask (type: Image)
+Function 243: ImageAlphaPremultiply() (1 input parameters)
+  Name: ImageAlphaPremultiply
+  Return type: void
+  Description: Premultiply alpha channel
+  Param[1]: image (type: Image *)
+Function 244: ImageResize() (3 input parameters)
+  Name: ImageResize
+  Return type: void
+  Description: Resize image (Bicubic scaling algorithm)
+  Param[1]: image (type: Image *)
+  Param[2]: newWidth (type: int)
+  Param[3]: newHeight (type: int)
+Function 245: ImageResizeNN() (3 input parameters)
+  Name: ImageResizeNN
+  Return type: void
+  Description: Resize image (Nearest-Neighbor scaling algorithm)
+  Param[1]: image (type: Image *)
+  Param[2]: newWidth (type: int)
+  Param[3]: newHeight (type: int)
+Function 246: ImageResizeCanvas() (6 input parameters)
+  Name: ImageResizeCanvas
+  Return type: void
+  Description: Resize canvas and fill with color
+  Param[1]: image (type: Image *)
+  Param[2]: newWidth (type: int)
+  Param[3]: newHeight (type: int)
+  Param[4]: offsetX (type: int)
+  Param[5]: offsetY (type: int)
+  Param[6]: fill (type: Color)
+Function 247: ImageMipmaps() (1 input parameters)
+  Name: ImageMipmaps
+  Return type: void
+  Description: Compute all mipmap levels for a provided image
+  Param[1]: image (type: Image *)
+Function 248: ImageDither() (5 input parameters)
+  Name: ImageDither
+  Return type: void
+  Description: Dither image data to 16bpp or lower (Floyd-Steinberg dithering)
+  Param[1]: image (type: Image *)
+  Param[2]: rBpp (type: int)
+  Param[3]: gBpp (type: int)
+  Param[4]: bBpp (type: int)
+  Param[5]: aBpp (type: int)
+Function 249: ImageFlipVertical() (1 input parameters)
+  Name: ImageFlipVertical
+  Return type: void
+  Description: Flip image vertically
+  Param[1]: image (type: Image *)
+Function 250: ImageFlipHorizontal() (1 input parameters)
+  Name: ImageFlipHorizontal
+  Return type: void
+  Description: Flip image horizontally
+  Param[1]: image (type: Image *)
+Function 251: ImageRotateCW() (1 input parameters)
+  Name: ImageRotateCW
+  Return type: void
+  Description: Rotate image clockwise 90deg
+  Param[1]: image (type: Image *)
+Function 252: ImageRotateCCW() (1 input parameters)
+  Name: ImageRotateCCW
+  Return type: void
+  Description: Rotate image counter-clockwise 90deg
+  Param[1]: image (type: Image *)
+Function 253: ImageColorTint() (2 input parameters)
+  Name: ImageColorTint
+  Return type: void
+  Description: Modify image color: tint
+  Param[1]: image (type: Image *)
+  Param[2]: color (type: Color)
+Function 254: ImageColorInvert() (1 input parameters)
+  Name: ImageColorInvert
+  Return type: void
+  Description: Modify image color: invert
+  Param[1]: image (type: Image *)
+Function 255: ImageColorGrayscale() (1 input parameters)
+  Name: ImageColorGrayscale
+  Return type: void
+  Description: Modify image color: grayscale
+  Param[1]: image (type: Image *)
+Function 256: ImageColorContrast() (2 input parameters)
+  Name: ImageColorContrast
+  Return type: void
+  Description: Modify image color: contrast (-100 to 100)
+  Param[1]: image (type: Image *)
+  Param[2]: contrast (type: float)
+Function 257: ImageColorBrightness() (2 input parameters)
+  Name: ImageColorBrightness
+  Return type: void
+  Description: Modify image color: brightness (-255 to 255)
+  Param[1]: image (type: Image *)
+  Param[2]: brightness (type: int)
+Function 258: ImageColorReplace() (3 input parameters)
+  Name: ImageColorReplace
+  Return type: void
+  Description: Modify image color: replace color
+  Param[1]: image (type: Image *)
+  Param[2]: color (type: Color)
+  Param[3]: replace (type: Color)
+Function 259: LoadImageColors() (1 input parameters)
+  Name: LoadImageColors
+  Return type: Color *
+  Description: Load color data from image as a Color array (RGBA - 32bit)
+  Param[1]: image (type: Image)
+Function 260: LoadImagePalette() (3 input parameters)
+  Name: LoadImagePalette
+  Return type: Color *
+  Description: Load colors palette from image as a Color array (RGBA - 32bit)
+  Param[1]: image (type: Image)
+  Param[2]: maxPaletteSize (type: int)
+  Param[3]: colorsCount (type: int *)
+Function 261: UnloadImageColors() (1 input parameters)
+  Name: UnloadImageColors
+  Return type: void
+  Description: Unload color data loaded with LoadImageColors()
+  Param[1]: colors (type: Color *)
+Function 262: UnloadImagePalette() (1 input parameters)
+  Name: UnloadImagePalette
+  Return type: void
+  Description: Unload colors palette loaded with LoadImagePalette()
+  Param[1]: colors (type: Color *)
+Function 263: GetImageAlphaBorder() (2 input parameters)
+  Name: GetImageAlphaBorder
+  Return type: Rectangle
+  Description: Get image alpha border rectangle
+  Param[1]: image (type: Image)
+  Param[2]: threshold (type: float)
+Function 264: ImageClearBackground() (2 input parameters)
+  Name: ImageClearBackground
+  Return type: void
+  Description: Clear image background with given color
+  Param[1]: dst (type: Image *)
+  Param[2]: color (type: Color)
+Function 265: ImageDrawPixel() (4 input parameters)
+  Name: ImageDrawPixel
+  Return type: void
+  Description: Draw pixel within an image
+  Param[1]: dst (type: Image *)
+  Param[2]: posX (type: int)
+  Param[3]: posY (type: int)
+  Param[4]: color (type: Color)
+Function 266: ImageDrawPixelV() (3 input parameters)
+  Name: ImageDrawPixelV
+  Return type: void
+  Description: Draw pixel within an image (Vector version)
+  Param[1]: dst (type: Image *)
+  Param[2]: position (type: Vector2)
+  Param[3]: color (type: Color)
+Function 267: ImageDrawLine() (6 input parameters)
+  Name: ImageDrawLine
+  Return type: void
+  Description: Draw line within an image
+  Param[1]: dst (type: Image *)
+  Param[2]: startPosX (type: int)
+  Param[3]: startPosY (type: int)
+  Param[4]: endPosX (type: int)
+  Param[5]: endPosY (type: int)
+  Param[6]: color (type: Color)
+Function 268: ImageDrawLineV() (4 input parameters)
+  Name: ImageDrawLineV
+  Return type: void
+  Description: Draw line within an image (Vector version)
+  Param[1]: dst (type: Image *)
+  Param[2]: start (type: Vector2)
+  Param[3]: end (type: Vector2)
+  Param[4]: color (type: Color)
+Function 269: ImageDrawCircle() (5 input parameters)
+  Name: ImageDrawCircle
+  Return type: void
+  Description: Draw circle within an image
+  Param[1]: dst (type: Image *)
+  Param[2]: centerX (type: int)
+  Param[3]: centerY (type: int)
+  Param[4]: radius (type: int)
+  Param[5]: color (type: Color)
+Function 270: ImageDrawCircleV() (4 input parameters)
+  Name: ImageDrawCircleV
+  Return type: void
+  Description: Draw circle within an image (Vector version)
+  Param[1]: dst (type: Image *)
+  Param[2]: center (type: Vector2)
+  Param[3]: radius (type: int)
+  Param[4]: color (type: Color)
+Function 271: ImageDrawRectangle() (6 input parameters)
+  Name: ImageDrawRectangle
+  Return type: void
+  Description: Draw rectangle within an image
+  Param[1]: dst (type: Image *)
+  Param[2]: posX (type: int)
+  Param[3]: posY (type: int)
+  Param[4]: width (type: int)
+  Param[5]: height (type: int)
+  Param[6]: color (type: Color)
+Function 272: ImageDrawRectangleV() (4 input parameters)
+  Name: ImageDrawRectangleV
+  Return type: void
+  Description: Draw rectangle within an image (Vector version)
+  Param[1]: dst (type: Image *)
+  Param[2]: position (type: Vector2)
+  Param[3]: size (type: Vector2)
+  Param[4]: color (type: Color)
+Function 273: ImageDrawRectangleRec() (3 input parameters)
+  Name: ImageDrawRectangleRec
+  Return type: void
+  Description: Draw rectangle within an image
+  Param[1]: dst (type: Image *)
+  Param[2]: rec (type: Rectangle)
+  Param[3]: color (type: Color)
+Function 274: ImageDrawRectangleLines() (4 input parameters)
+  Name: ImageDrawRectangleLines
+  Return type: void
+  Description: Draw rectangle lines within an image
+  Param[1]: dst (type: Image *)
+  Param[2]: rec (type: Rectangle)
+  Param[3]: thick (type: int)
+  Param[4]: color (type: Color)
+Function 275: ImageDraw() (5 input parameters)
+  Name: ImageDraw
+  Return type: void
+  Description: Draw a source image within a destination image (tint applied to source)
+  Param[1]: dst (type: Image *)
+  Param[2]: src (type: Image)
+  Param[3]: srcRec (type: Rectangle)
+  Param[4]: dstRec (type: Rectangle)
+  Param[5]: tint (type: Color)
+Function 276: ImageDrawText() (6 input parameters)
+  Name: ImageDrawText
+  Return type: void
+  Description: Draw text (using default font) within an image (destination)
+  Param[1]: dst (type: Image *)
+  Param[2]: text (type: const char *)
+  Param[3]: posX (type: int)
+  Param[4]: posY (type: int)
+  Param[5]: fontSize (type: int)
+  Param[6]: color (type: Color)
+Function 277: ImageDrawTextEx() (7 input parameters)
+  Name: ImageDrawTextEx
+  Return type: void
+  Description: Draw text (custom sprite font) within an image (destination)
+  Param[1]: dst (type: Image *)
+  Param[2]: font (type: Font)
+  Param[3]: text (type: const char *)
+  Param[4]: position (type: Vector2)
+  Param[5]: fontSize (type: float)
+  Param[6]: spacing (type: float)
+  Param[7]: tint (type: Color)
+Function 278: LoadTexture() (1 input parameters)
+  Name: LoadTexture
+  Return type: Texture2D
+  Description: Load texture from file into GPU memory (VRAM)
+  Param[1]: fileName (type: const char *)
+Function 279: LoadTextureFromImage() (1 input parameters)
+  Name: LoadTextureFromImage
+  Return type: Texture2D
+  Description: Load texture from image data
+  Param[1]: image (type: Image)
+Function 280: LoadTextureCubemap() (2 input parameters)
+  Name: LoadTextureCubemap
+  Return type: TextureCubemap
+  Description: Load cubemap from image, multiple image cubemap layouts supported
+  Param[1]: image (type: Image)
+  Param[2]: layout (type: int)
+Function 281: LoadRenderTexture() (2 input parameters)
+  Name: LoadRenderTexture
+  Return type: RenderTexture2D
+  Description: Load texture for rendering (framebuffer)
+  Param[1]: width (type: int)
+  Param[2]: height (type: int)
+Function 282: UnloadTexture() (1 input parameters)
+  Name: UnloadTexture
+  Return type: void
+  Description: Unload texture from GPU memory (VRAM)
+  Param[1]: texture (type: Texture2D)
+Function 283: UnloadRenderTexture() (1 input parameters)
+  Name: UnloadRenderTexture
+  Return type: void
+  Description: Unload render texture from GPU memory (VRAM)
+  Param[1]: target (type: RenderTexture2D)
+Function 284: UpdateTexture() (2 input parameters)
+  Name: UpdateTexture
+  Return type: void
+  Description: Update GPU texture with new data
+  Param[1]: texture (type: Texture2D)
+  Param[2]: pixels (type: const void *)
+Function 285: UpdateTextureRec() (3 input parameters)
+  Name: UpdateTextureRec
+  Return type: void
+  Description: Update GPU texture rectangle with new data
+  Param[1]: texture (type: Texture2D)
+  Param[2]: rec (type: Rectangle)
+  Param[3]: pixels (type: const void *)
+Function 286: GetTextureData() (1 input parameters)
+  Name: GetTextureData
+  Return type: Image
+  Description: Get pixel data from GPU texture and return an Image
+  Param[1]: texture (type: Texture2D)
+Function 287: GetScreenData() (0 input parameters)
+  Name: GetScreenData
+  Return type: Image
+  Description: Get pixel data from screen buffer and return an Image (screenshot)
+  No input parameters
+Function 288: GenTextureMipmaps() (1 input parameters)
+  Name: GenTextureMipmaps
+  Return type: void
+  Description: Generate GPU mipmaps for a texture
+  Param[1]: texture (type: Texture2D *)
+Function 289: SetTextureFilter() (2 input parameters)
+  Name: SetTextureFilter
+  Return type: void
+  Description: Set texture scaling filter mode
+  Param[1]: texture (type: Texture2D)
+  Param[2]: filter (type: int)
+Function 290: SetTextureWrap() (2 input parameters)
+  Name: SetTextureWrap
+  Return type: void
+  Description: Set texture wrapping mode
+  Param[1]: texture (type: Texture2D)
+  Param[2]: wrap (type: int)
+Function 291: DrawTexture() (4 input parameters)
+  Name: DrawTexture
+  Return type: void
+  Description: Draw a Texture2D
+  Param[1]: texture (type: Texture2D)
+  Param[2]: posX (type: int)
+  Param[3]: posY (type: int)
+  Param[4]: tint (type: Color)
+Function 292: DrawTextureV() (3 input parameters)
+  Name: DrawTextureV
+  Return type: void
+  Description: Draw a Texture2D with position defined as Vector2
+  Param[1]: texture (type: Texture2D)
+  Param[2]: position (type: Vector2)
+  Param[3]: tint (type: Color)
+Function 293: DrawTextureEx() (5 input parameters)
+  Name: DrawTextureEx
+  Return type: void
+  Description: Draw a Texture2D with extended parameters
+  Param[1]: texture (type: Texture2D)
+  Param[2]: position (type: Vector2)
+  Param[3]: rotation (type: float)
+  Param[4]: scale (type: float)
+  Param[5]: tint (type: Color)
+Function 294: DrawTextureRec() (4 input parameters)
+  Name: DrawTextureRec
+  Return type: void
+  Description: Draw a part of a texture defined by a rectangle
+  Param[1]: texture (type: Texture2D)
+  Param[2]: source (type: Rectangle)
+  Param[3]: position (type: Vector2)
+  Param[4]: tint (type: Color)
+Function 295: DrawTextureQuad() (5 input parameters)
+  Name: DrawTextureQuad
+  Return type: void
+  Description: Draw texture quad with tiling and offset parameters
+  Param[1]: texture (type: Texture2D)
+  Param[2]: tiling (type: Vector2)
+  Param[3]: offset (type: Vector2)
+  Param[4]: quad (type: Rectangle)
+  Param[5]: tint (type: Color)
+Function 296: DrawTextureTiled() (7 input parameters)
+  Name: DrawTextureTiled
+  Return type: void
+  Description: Draw part of a texture (defined by a rectangle) with rotation and scale tiled into dest.
+  Param[1]: texture (type: Texture2D)
+  Param[2]: source (type: Rectangle)
+  Param[3]: dest (type: Rectangle)
+  Param[4]: origin (type: Vector2)
+  Param[5]: rotation (type: float)
+  Param[6]: scale (type: float)
+  Param[7]: tint (type: Color)
+Function 297: DrawTexturePro() (6 input parameters)
+  Name: DrawTexturePro
+  Return type: void
+  Description: Draw a part of a texture defined by a rectangle with 'pro' parameters
+  Param[1]: texture (type: Texture2D)
+  Param[2]: source (type: Rectangle)
+  Param[3]: dest (type: Rectangle)
+  Param[4]: origin (type: Vector2)
+  Param[5]: rotation (type: float)
+  Param[6]: tint (type: Color)
+Function 298: DrawTextureNPatch() (6 input parameters)
+  Name: DrawTextureNPatch
+  Return type: void
+  Description: Draws a texture (or part of it) that stretches or shrinks nicely
+  Param[1]: texture (type: Texture2D)
+  Param[2]: nPatchInfo (type: NPatchInfo)
+  Param[3]: dest (type: Rectangle)
+  Param[4]: origin (type: Vector2)
+  Param[5]: rotation (type: float)
+  Param[6]: tint (type: Color)
+Function 299: DrawTexturePoly() (6 input parameters)
+  Name: DrawTexturePoly
+  Return type: void
+  Description: Draw a textured polygon
+  Param[1]: texture (type: Texture2D)
+  Param[2]: center (type: Vector2)
+  Param[3]: points (type: Vector2 *)
+  Param[4]: texcoords (type: Vector2 *)
+  Param[5]: pointsCount (type: int)
+  Param[6]: tint (type: Color)
+Function 300: Fade() (2 input parameters)
+  Name: Fade
+  Return type: Color
+  Description: Get color with alpha applied, alpha goes from 0.0f to 1.0f
+  Param[1]: color (type: Color)
+  Param[2]: alpha (type: float)
+Function 301: ColorToInt() (1 input parameters)
+  Name: ColorToInt
+  Return type: int
+  Description: Get hexadecimal value for a Color
+  Param[1]: color (type: Color)
+Function 302: ColorNormalize() (1 input parameters)
+  Name: ColorNormalize
+  Return type: Vector4
+  Description: Get Color normalized as float [0..1]
+  Param[1]: color (type: Color)
+Function 303: ColorFromNormalized() (1 input parameters)
+  Name: ColorFromNormalized
+  Return type: Color
+  Description: Get Color from normalized values [0..1]
+  Param[1]: normalized (type: Vector4)
+Function 304: ColorToHSV() (1 input parameters)
+  Name: ColorToHSV
+  Return type: Vector3
+  Description: Get HSV values for a Color, hue [0..360], saturation/value [0..1]
+  Param[1]: color (type: Color)
+Function 305: ColorFromHSV() (3 input parameters)
+  Name: ColorFromHSV
+  Return type: Color
+  Description: Get a Color from HSV values, hue [0..360], saturation/value [0..1]
+  Param[1]: hue (type: float)
+  Param[2]: saturation (type: float)
+  Param[3]: value (type: float)
+Function 306: ColorAlpha() (2 input parameters)
+  Name: ColorAlpha
+  Return type: Color
+  Description: Get color with alpha applied, alpha goes from 0.0f to 1.0f
+  Param[1]: color (type: Color)
+  Param[2]: alpha (type: float)
+Function 307: ColorAlphaBlend() (3 input parameters)
+  Name: ColorAlphaBlend
+  Return type: Color
+  Description: Get src alpha-blended into dst color with tint
+  Param[1]: dst (type: Color)
+  Param[2]: src (type: Color)
+  Param[3]: tint (type: Color)
+Function 308: GetColor() (1 input parameters)
+  Name: GetColor
+  Return type: Color
+  Description: Get Color structure from hexadecimal value
+  Param[1]: hexValue (type: int)
+Function 309: GetPixelColor() (2 input parameters)
+  Name: GetPixelColor
+  Return type: Color
+  Description: Get Color from a source pixel pointer of certain format
+  Param[1]: srcPtr (type: void *)
+  Param[2]: format (type: int)
+Function 310: SetPixelColor() (3 input parameters)
+  Name: SetPixelColor
+  Return type: void
+  Description: Set color formatted into destination pixel pointer
+  Param[1]: dstPtr (type: void *)
+  Param[2]: color (type: Color)
+  Param[3]: format (type: int)
+Function 311: GetPixelDataSize() (3 input parameters)
+  Name: GetPixelDataSize
+  Return type: int
+  Description: Get pixel data size in bytes for certain format
+  Param[1]: width (type: int)
+  Param[2]: height (type: int)
+  Param[3]: format (type: int)
+Function 312: GetFontDefault() (0 input parameters)
+  Name: GetFontDefault
+  Return type: Font
+  Description: Get the default Font
+  No input parameters
+Function 313: LoadFont() (1 input parameters)
+  Name: LoadFont
+  Return type: Font
+  Description: Load font from file into GPU memory (VRAM)
+  Param[1]: fileName (type: const char *)
+Function 314: LoadFontEx() (4 input parameters)
+  Name: LoadFontEx
+  Return type: Font
+  Description: Load font from file with extended parameters
+  Param[1]: fileName (type: const char *)
+  Param[2]: fontSize (type: int)
+  Param[3]: fontChars (type: int *)
+  Param[4]: charsCount (type: int)
+Function 315: LoadFontFromImage() (3 input parameters)
+  Name: LoadFontFromImage
+  Return type: Font
+  Description: Load font from Image (XNA style)
+  Param[1]: image (type: Image)
+  Param[2]: key (type: Color)
+  Param[3]: firstChar (type: int)
+Function 316: LoadFontFromMemory() (6 input parameters)
+  Name: LoadFontFromMemory
+  Return type: Font
+  Description: Load font from memory buffer, fileType refers to extension: i.e. '.ttf'
+  Param[1]: fileType (type: const char *)
+  Param[2]: fileData (type: const unsigned char *)
+  Param[3]: dataSize (type: int)
+  Param[4]: fontSize (type: int)
+  Param[5]: fontChars (type: int *)
+  Param[6]: charsCount (type: int)
+Function 317: LoadFontData() (6 input parameters)
+  Name: LoadFontData
+  Return type: CharInfo *
+  Description: Load font data for further use
+  Param[1]: fileData (type: const unsigned char *)
+  Param[2]: dataSize (type: int)
+  Param[3]: fontSize (type: int)
+  Param[4]: fontChars (type: int *)
+  Param[5]: charsCount (type: int)
+  Param[6]: type (type: int)
+Function 318: GenImageFontAtlas() (6 input parameters)
+  Name: GenImageFontAtlas
+  Return type: Image
+  Description: Generate image font atlas using chars info
+  Param[1]: chars (type: const CharInfo *)
+  Param[2]: recs (type: Rectangle **)
+  Param[3]: charsCount (type: int)
+  Param[4]: fontSize (type: int)
+  Param[5]: padding (type: int)
+  Param[6]: packMethod (type: int)
+Function 319: UnloadFontData() (2 input parameters)
+  Name: UnloadFontData
+  Return type: void
+  Description: Unload font chars info data (RAM)
+  Param[1]: chars (type: CharInfo *)
+  Param[2]: charsCount (type: int)
+Function 320: UnloadFont() (1 input parameters)
+  Name: UnloadFont
+  Return type: void
+  Description: Unload Font from GPU memory (VRAM)
+  Param[1]: font (type: Font)
+Function 321: DrawFPS() (2 input parameters)
+  Name: DrawFPS
+  Return type: void
+  Description: Draw current FPS
+  Param[1]: posX (type: int)
+  Param[2]: posY (type: int)
+Function 322: DrawText() (5 input parameters)
+  Name: DrawText
+  Return type: void
+  Description: Draw text (using default font)
+  Param[1]: text (type: const char *)
+  Param[2]: posX (type: int)
+  Param[3]: posY (type: int)
+  Param[4]: fontSize (type: int)
+  Param[5]: color (type: Color)
+Function 323: DrawTextEx() (6 input parameters)
+  Name: DrawTextEx
+  Return type: void
+  Description: Draw text using font and additional parameters
+  Param[1]: font (type: Font)
+  Param[2]: text (type: const char *)
+  Param[3]: position (type: Vector2)
+  Param[4]: fontSize (type: float)
+  Param[5]: spacing (type: float)
+  Param[6]: tint (type: Color)
+Function 324: DrawTextRec() (7 input parameters)
+  Name: DrawTextRec
+  Return type: void
+  Description: Draw text using font inside rectangle limits
+  Param[1]: font (type: Font)
+  Param[2]: text (type: const char *)
+  Param[3]: rec (type: Rectangle)
+  Param[4]: fontSize (type: float)
+  Param[5]: spacing (type: float)
+  Param[6]: wordWrap (type: bool)
+  Param[7]: tint (type: Color)
+Function 325: DrawTextRecEx() (11 input parameters)
+  Name: DrawTextRecEx
+  Return type: void
+  Description: Draw text using font inside rectangle limits with support for text selection
+  Param[1]: font (type: Font)
+  Param[2]: text (type: const char *)
+  Param[3]: rec (type: Rectangle)
+  Param[4]: fontSize (type: float)
+  Param[5]: spacing (type: float)
+  Param[6]: wordWrap (type: bool)
+  Param[7]: tint (type: Color)
+  Param[8]: selectStart (type: int)
+  Param[9]: selectLength (type: int)
+  Param[10]: selectTint (type: Color)
+  Param[11]: selectBackTint (type: Color)
+Function 326: DrawTextCodepoint() (5 input parameters)
+  Name: DrawTextCodepoint
+  Return type: void
+  Description: Draw one character (codepoint)
+  Param[1]: font (type: Font)
+  Param[2]: codepoint (type: int)
+  Param[3]: position (type: Vector2)
+  Param[4]: fontSize (type: float)
+  Param[5]: tint (type: Color)
+Function 327: MeasureText() (2 input parameters)
+  Name: MeasureText
+  Return type: int
+  Description: Measure string width for default font
+  Param[1]: text (type: const char *)
+  Param[2]: fontSize (type: int)
+Function 328: MeasureTextEx() (4 input parameters)
+  Name: MeasureTextEx
+  Return type: Vector2
+  Description: Measure string size for Font
+  Param[1]: font (type: Font)
+  Param[2]: text (type: const char *)
+  Param[3]: fontSize (type: float)
+  Param[4]: spacing (type: float)
+Function 329: GetGlyphIndex() (2 input parameters)
+  Name: GetGlyphIndex
+  Return type: int
+  Description: Get index position for a unicode character on font
+  Param[1]: font (type: Font)
+  Param[2]: codepoint (type: int)
+Function 330: TextCopy() (2 input parameters)
+  Name: TextCopy
+  Return type: int
+  Description: Copy one string to another, returns bytes copied
+  Param[1]: dst (type: char *)
+  Param[2]: src (type: const char *)
+Function 331: TextIsEqual() (2 input parameters)
+  Name: TextIsEqual
+  Return type: bool
+  Description: Check if two text string are equal
+  Param[1]: text1 (type: const char *)
+  Param[2]: text2 (type: const char *)
+Function 332: TextLength() (1 input parameters)
+  Name: TextLength
+  Return type: unsigned int
+  Description: Get text length, checks for '\0' ending
+  Param[1]: text (type: const char *)
+Function 333: TextFormat() (2 input parameters)
+  Name: TextFormat
+  Return type: const char *
+  Description: Text formatting with variables (sprintf style)
+  Param[1]: text (type: const char *)
+  Param[2]:  (type: )
+Function 334: TextSubtext() (3 input parameters)
+  Name: TextSubtext
+  Return type: const char *
+  Description: Get a piece of a text string
+  Param[1]: text (type: const char *)
+  Param[2]: position (type: int)
+  Param[3]: length (type: int)
+Function 335: TextReplace() (3 input parameters)
+  Name: TextReplace
+  Return type: char *
+  Description: Replace text string (memory must be freed!)
+  Param[1]: text (type: char *)
+  Param[2]: replace (type: const char *)
+  Param[3]: by (type: const char *)
+Function 336: TextInsert() (3 input parameters)
+  Name: TextInsert
+  Return type: char *
+  Description: Insert text in a position (memory must be freed!)
+  Param[1]: text (type: const char *)
+  Param[2]: insert (type: const char *)
+  Param[3]: position (type: int)
+Function 337: TextJoin() (3 input parameters)
+  Name: TextJoin
+  Return type: const char *
+  Description: Join text strings with delimiter
+  Param[1]: textList (type: const char **)
+  Param[2]: count (type: int)
+  Param[3]: delimiter (type: const char *)
+Function 338: TextSplit() (3 input parameters)
+  Name: TextSplit
+  Return type: const char **
+  Description: Split text into multiple strings
+  Param[1]: text (type: const char *)
+  Param[2]: delimiter (type: char)
+  Param[3]: count (type: int *)
+Function 339: TextAppend() (3 input parameters)
+  Name: TextAppend
+  Return type: void
+  Description: Append text at specific position and move cursor!
+  Param[1]: text (type: char *)
+  Param[2]: append (type: const char *)
+  Param[3]: position (type: int *)
+Function 340: TextFindIndex() (2 input parameters)
+  Name: TextFindIndex
+  Return type: int
+  Description: Find first text occurrence within a string
+  Param[1]: text (type: const char *)
+  Param[2]: find (type: const char *)
+Function 341: TextToUpper() (1 input parameters)
+  Name: TextToUpper
+  Return type: const char *
+  Description: Get upper case version of provided string
+  Param[1]: text (type: const char *)
+Function 342: TextToLower() (1 input parameters)
+  Name: TextToLower
+  Return type: const char *
+  Description: Get lower case version of provided string
+  Param[1]: text (type: const char *)
+Function 343: TextToPascal() (1 input parameters)
+  Name: TextToPascal
+  Return type: const char *
+  Description: Get Pascal case notation version of provided string
+  Param[1]: text (type: const char *)
+Function 344: TextToInteger() (1 input parameters)
+  Name: TextToInteger
+  Return type: int
+  Description: Get integer value from text (negative values not supported)
+  Param[1]: text (type: const char *)
+Function 345: TextToUtf8() (2 input parameters)
+  Name: TextToUtf8
+  Return type: char *
+  Description: Encode text codepoint into utf8 text (memory must be freed!)
+  Param[1]: codepoints (type: int *)
+  Param[2]: length (type: int)
+Function 346: GetCodepoints() (2 input parameters)
+  Name: GetCodepoints
+  Return type: int *
+  Description: Get all codepoints in a string, codepoints count returned by parameters
+  Param[1]: text (type: const char *)
+  Param[2]: count (type: int *)
+Function 347: GetCodepointsCount() (1 input parameters)
+  Name: GetCodepointsCount
+  Return type: int
+  Description: Get total number of characters (codepoints) in a UTF8 encoded string
+  Param[1]: text (type: const char *)
+Function 348: GetNextCodepoint() (2 input parameters)
+  Name: GetNextCodepoint
+  Return type: int
+  Description: Get next codepoint in a UTF8 encoded string; 0x3f('?') is returned on failure
+  Param[1]: text (type: const char *)
+  Param[2]: bytesProcessed (type: int *)
+Function 349: CodepointToUtf8() (2 input parameters)
+  Name: CodepointToUtf8
+  Return type: const char *
+  Description: Encode codepoint into utf8 text (char array length returned as parameter)
+  Param[1]: codepoint (type: int)
+  Param[2]: byteLength (type: int *)
+Function 350: DrawLine3D() (3 input parameters)
+  Name: DrawLine3D
+  Return type: void
+  Description: Draw a line in 3D world space
+  Param[1]: startPos (type: Vector3)
+  Param[2]: endPos (type: Vector3)
+  Param[3]: color (type: Color)
+Function 351: DrawPoint3D() (2 input parameters)
+  Name: DrawPoint3D
+  Return type: void
+  Description: Draw a point in 3D space, actually a small line
+  Param[1]: position (type: Vector3)
+  Param[2]: color (type: Color)
+Function 352: DrawCircle3D() (5 input parameters)
+  Name: DrawCircle3D
+  Return type: void
+  Description: Draw a circle in 3D world space
+  Param[1]: center (type: Vector3)
+  Param[2]: radius (type: float)
+  Param[3]: rotationAxis (type: Vector3)
+  Param[4]: rotationAngle (type: float)
+  Param[5]: color (type: Color)
+Function 353: DrawTriangle3D() (4 input parameters)
+  Name: DrawTriangle3D
+  Return type: void
+  Description: Draw a color-filled triangle (vertex in counter-clockwise order!)
+  Param[1]: v1 (type: Vector3)
+  Param[2]: v2 (type: Vector3)
+  Param[3]: v3 (type: Vector3)
+  Param[4]: color (type: Color)
+Function 354: DrawTriangleStrip3D() (3 input parameters)
+  Name: DrawTriangleStrip3D
+  Return type: void
+  Description: Draw a triangle strip defined by points
+  Param[1]: points (type: Vector3 *)
+  Param[2]: pointsCount (type: int)
+  Param[3]: color (type: Color)
+Function 355: DrawCube() (5 input parameters)
+  Name: DrawCube
+  Return type: void
+  Description: Draw cube
+  Param[1]: position (type: Vector3)
+  Param[2]: width (type: float)
+  Param[3]: height (type: float)
+  Param[4]: length (type: float)
+  Param[5]: color (type: Color)
+Function 356: DrawCubeV() (3 input parameters)
+  Name: DrawCubeV
+  Return type: void
+  Description: Draw cube (Vector version)
+  Param[1]: position (type: Vector3)
+  Param[2]: size (type: Vector3)
+  Param[3]: color (type: Color)
+Function 357: DrawCubeWires() (5 input parameters)
+  Name: DrawCubeWires
+  Return type: void
+  Description: Draw cube wires
+  Param[1]: position (type: Vector3)
+  Param[2]: width (type: float)
+  Param[3]: height (type: float)
+  Param[4]: length (type: float)
+  Param[5]: color (type: Color)
+Function 358: DrawCubeWiresV() (3 input parameters)
+  Name: DrawCubeWiresV
+  Return type: void
+  Description: Draw cube wires (Vector version)
+  Param[1]: position (type: Vector3)
+  Param[2]: size (type: Vector3)
+  Param[3]: color (type: Color)
+Function 359: DrawCubeTexture() (6 input parameters)
+  Name: DrawCubeTexture
+  Return type: void
+  Description: Draw cube textured
+  Param[1]: texture (type: Texture2D)
+  Param[2]: position (type: Vector3)
+  Param[3]: width (type: float)
+  Param[4]: height (type: float)
+  Param[5]: length (type: float)
+  Param[6]: color (type: Color)
+Function 360: DrawSphere() (3 input parameters)
+  Name: DrawSphere
+  Return type: void
+  Description: Draw sphere
+  Param[1]: centerPos (type: Vector3)
+  Param[2]: radius (type: float)
+  Param[3]: color (type: Color)
+Function 361: DrawSphereEx() (5 input parameters)
+  Name: DrawSphereEx
+  Return type: void
+  Description: Draw sphere with extended parameters
+  Param[1]: centerPos (type: Vector3)
+  Param[2]: radius (type: float)
+  Param[3]: rings (type: int)
+  Param[4]: slices (type: int)
+  Param[5]: color (type: Color)
+Function 362: DrawSphereWires() (5 input parameters)
+  Name: DrawSphereWires
+  Return type: void
+  Description: Draw sphere wires
+  Param[1]: centerPos (type: Vector3)
+  Param[2]: radius (type: float)
+  Param[3]: rings (type: int)
+  Param[4]: slices (type: int)
+  Param[5]: color (type: Color)
+Function 363: DrawCylinder() (6 input parameters)
+  Name: DrawCylinder
+  Return type: void
+  Description: Draw a cylinder/cone
+  Param[1]: position (type: Vector3)
+  Param[2]: radiusTop (type: float)
+  Param[3]: radiusBottom (type: float)
+  Param[4]: height (type: float)
+  Param[5]: slices (type: int)
+  Param[6]: color (type: Color)
+Function 364: DrawCylinderWires() (6 input parameters)
+  Name: DrawCylinderWires
+  Return type: void
+  Description: Draw a cylinder/cone wires
+  Param[1]: position (type: Vector3)
+  Param[2]: radiusTop (type: float)
+  Param[3]: radiusBottom (type: float)
+  Param[4]: height (type: float)
+  Param[5]: slices (type: int)
+  Param[6]: color (type: Color)
+Function 365: DrawPlane() (3 input parameters)
+  Name: DrawPlane
+  Return type: void
+  Description: Draw a plane XZ
+  Param[1]: centerPos (type: Vector3)
+  Param[2]: size (type: Vector2)
+  Param[3]: color (type: Color)
+Function 366: DrawRay() (2 input parameters)
+  Name: DrawRay
+  Return type: void
+  Description: Draw a ray line
+  Param[1]: ray (type: Ray)
+  Param[2]: color (type: Color)
+Function 367: DrawGrid() (2 input parameters)
+  Name: DrawGrid
+  Return type: void
+  Description: Draw a grid (centered at (0, 0, 0))
+  Param[1]: slices (type: int)
+  Param[2]: spacing (type: float)
+Function 368: LoadModel() (1 input parameters)
+  Name: LoadModel
+  Return type: Model
+  Description: Load model from files (meshes and materials)
+  Param[1]: fileName (type: const char *)
+Function 369: LoadModelFromMesh() (1 input parameters)
+  Name: LoadModelFromMesh
+  Return type: Model
+  Description: Load model from generated mesh (default material)
+  Param[1]: mesh (type: Mesh)
+Function 370: UnloadModel() (1 input parameters)
+  Name: UnloadModel
+  Return type: void
+  Description: Unload model (including meshes) from memory (RAM and/or VRAM)
+  Param[1]: model (type: Model)
+Function 371: UnloadModelKeepMeshes() (1 input parameters)
+  Name: UnloadModelKeepMeshes
+  Return type: void
+  Description: Unload model (but not meshes) from memory (RAM and/or VRAM)
+  Param[1]: model (type: Model)
+Function 372: UploadMesh() (2 input parameters)
+  Name: UploadMesh
+  Return type: void
+  Description: Upload mesh vertex data in GPU and provide VAO/VBO ids
+  Param[1]: mesh (type: Mesh *)
+  Param[2]: dynamic (type: bool)
+Function 373: UpdateMeshBuffer() (5 input parameters)
+  Name: UpdateMeshBuffer
+  Return type: void
+  Description: Update mesh vertex data in GPU for a specific buffer index
+  Param[1]: mesh (type: Mesh)
+  Param[2]: index (type: int)
+  Param[3]: data (type: void *)
+  Param[4]: dataSize (type: int)
+  Param[5]: offset (type: int)
+Function 374: DrawMesh() (3 input parameters)
+  Name: DrawMesh
+  Return type: void
+  Description: Draw a 3d mesh with material and transform
+  Param[1]: mesh (type: Mesh)
+  Param[2]: material (type: Material)
+  Param[3]: transform (type: Matrix)
+Function 375: DrawMeshInstanced() (4 input parameters)
+  Name: DrawMeshInstanced
+  Return type: void
+  Description: Draw multiple mesh instances with material and different transforms
+  Param[1]: mesh (type: Mesh)
+  Param[2]: material (type: Material)
+  Param[3]: transforms (type: Matrix *)
+  Param[4]: instances (type: int)
+Function 376: UnloadMesh() (1 input parameters)
+  Name: UnloadMesh
+  Return type: void
+  Description: Unload mesh data from CPU and GPU
+  Param[1]: mesh (type: Mesh)
+Function 377: ExportMesh() (2 input parameters)
+  Name: ExportMesh
+  Return type: bool
+  Description: Export mesh data to file, returns true on success
+  Param[1]: mesh (type: Mesh)
+  Param[2]: fileName (type: const char *)
+Function 378: LoadMaterials() (2 input parameters)
+  Name: LoadMaterials
+  Return type: Material *
+  Description: Load materials from model file
+  Param[1]: fileName (type: const char *)
+  Param[2]: materialCount (type: int *)
+Function 379: LoadMaterialDefault() (0 input parameters)
+  Name: LoadMaterialDefault
+  Return type: Material
+  Description: Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps)
+  No input parameters
+Function 380: UnloadMaterial() (1 input parameters)
+  Name: UnloadMaterial
+  Return type: void
+  Description: Unload material from GPU memory (VRAM)
+  Param[1]: material (type: Material)
+Function 381: SetMaterialTexture() (3 input parameters)
+  Name: SetMaterialTexture
+  Return type: void
+  Description: Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR...)
+  Param[1]: material (type: Material *)
+  Param[2]: mapType (type: int)
+  Param[3]: texture (type: Texture2D)
+Function 382: SetModelMeshMaterial() (3 input parameters)
+  Name: SetModelMeshMaterial
+  Return type: void
+  Description: Set material for a mesh
+  Param[1]: model (type: Model *)
+  Param[2]: meshId (type: int)
+  Param[3]: materialId (type: int)
+Function 383: LoadModelAnimations() (2 input parameters)
+  Name: LoadModelAnimations
+  Return type: ModelAnimation *
+  Description: Load model animations from file
+  Param[1]: fileName (type: const char *)
+  Param[2]: animsCount (type: int *)
+Function 384: UpdateModelAnimation() (3 input parameters)
+  Name: UpdateModelAnimation
+  Return type: void
+  Description: Update model animation pose
+  Param[1]: model (type: Model)
+  Param[2]: anim (type: ModelAnimation)
+  Param[3]: frame (type: int)
+Function 385: UnloadModelAnimation() (1 input parameters)
+  Name: UnloadModelAnimation
+  Return type: void
+  Description: Unload animation data
+  Param[1]: anim (type: ModelAnimation)
+Function 386: UnloadModelAnimations() (2 input parameters)
+  Name: UnloadModelAnimations
+  Return type: void
+  Description: Unload animation array data
+  Param[1]: animations (type: ModelAnimation*)
+  Param[2]: count (type: unsigned int)
+Function 387: IsModelAnimationValid() (2 input parameters)
+  Name: IsModelAnimationValid
+  Return type: bool
+  Description: Check model animation skeleton match
+  Param[1]: model (type: Model)
+  Param[2]: anim (type: ModelAnimation)
+Function 388: GenMeshPoly() (2 input parameters)
+  Name: GenMeshPoly
+  Return type: Mesh
+  Description: Generate polygonal mesh
+  Param[1]: sides (type: int)
+  Param[2]: radius (type: float)
+Function 389: GenMeshPlane() (4 input parameters)
+  Name: GenMeshPlane
+  Return type: Mesh
+  Description: Generate plane mesh (with subdivisions)
+  Param[1]: width (type: float)
+  Param[2]: length (type: float)
+  Param[3]: resX (type: int)
+  Param[4]: resZ (type: int)
+Function 390: GenMeshCube() (3 input parameters)
+  Name: GenMeshCube
+  Return type: Mesh
+  Description: Generate cuboid mesh
+  Param[1]: width (type: float)
+  Param[2]: height (type: float)
+  Param[3]: length (type: float)
+Function 391: GenMeshSphere() (3 input parameters)
+  Name: GenMeshSphere
+  Return type: Mesh
+  Description: Generate sphere mesh (standard sphere)
+  Param[1]: radius (type: float)
+  Param[2]: rings (type: int)
+  Param[3]: slices (type: int)
+Function 392: GenMeshHemiSphere() (3 input parameters)
+  Name: GenMeshHemiSphere
+  Return type: Mesh
+  Description: Generate half-sphere mesh (no bottom cap)
+  Param[1]: radius (type: float)
+  Param[2]: rings (type: int)
+  Param[3]: slices (type: int)
+Function 393: GenMeshCylinder() (3 input parameters)
+  Name: GenMeshCylinder
+  Return type: Mesh
+  Description: Generate cylinder mesh
+  Param[1]: radius (type: float)
+  Param[2]: height (type: float)
+  Param[3]: slices (type: int)
+Function 394: GenMeshTorus() (4 input parameters)
+  Name: GenMeshTorus
+  Return type: Mesh
+  Description: Generate torus mesh
+  Param[1]: radius (type: float)
+  Param[2]: size (type: float)
+  Param[3]: radSeg (type: int)
+  Param[4]: sides (type: int)
+Function 395: GenMeshKnot() (4 input parameters)
+  Name: GenMeshKnot
+  Return type: Mesh
+  Description: Generate trefoil knot mesh
+  Param[1]: radius (type: float)
+  Param[2]: size (type: float)
+  Param[3]: radSeg (type: int)
+  Param[4]: sides (type: int)
+Function 396: GenMeshHeightmap() (2 input parameters)
+  Name: GenMeshHeightmap
+  Return type: Mesh
+  Description: Generate heightmap mesh from image data
+  Param[1]: heightmap (type: Image)
+  Param[2]: size (type: Vector3)
+Function 397: GenMeshCubicmap() (2 input parameters)
+  Name: GenMeshCubicmap
+  Return type: Mesh
+  Description: Generate cubes-based map mesh from image data
+  Param[1]: cubicmap (type: Image)
+  Param[2]: cubeSize (type: Vector3)
+Function 398: GetMeshBoundingBox() (1 input parameters)
+  Name: GetMeshBoundingBox
+  Return type: BoundingBox
+  Description: Compute mesh bounding box limits
+  Param[1]: mesh (type: Mesh)
+Function 399: MeshTangents() (1 input parameters)
+  Name: MeshTangents
+  Return type: void
+  Description: Compute mesh tangents
+  Param[1]: mesh (type: Mesh *)
+Function 400: MeshBinormals() (1 input parameters)
+  Name: MeshBinormals
+  Return type: void
+  Description: Compute mesh binormals
+  Param[1]: mesh (type: Mesh *)
+Function 401: DrawModel() (4 input parameters)
+  Name: DrawModel
+  Return type: void
+  Description: Draw a model (with texture if set)
+  Param[1]: model (type: Model)
+  Param[2]: position (type: Vector3)
+  Param[3]: scale (type: float)
+  Param[4]: tint (type: Color)
+Function 402: DrawModelEx() (6 input parameters)
+  Name: DrawModelEx
+  Return type: void
+  Description: Draw a model with extended parameters
+  Param[1]: model (type: Model)
+  Param[2]: position (type: Vector3)
+  Param[3]: rotationAxis (type: Vector3)
+  Param[4]: rotationAngle (type: float)
+  Param[5]: scale (type: Vector3)
+  Param[6]: tint (type: Color)
+Function 403: DrawModelWires() (4 input parameters)
+  Name: DrawModelWires
+  Return type: void
+  Description: Draw a model wires (with texture if set)
+  Param[1]: model (type: Model)
+  Param[2]: position (type: Vector3)
+  Param[3]: scale (type: float)
+  Param[4]: tint (type: Color)
+Function 404: DrawModelWiresEx() (6 input parameters)
+  Name: DrawModelWiresEx
+  Return type: void
+  Description: Draw a model wires (with texture if set) with extended parameters
+  Param[1]: model (type: Model)
+  Param[2]: position (type: Vector3)
+  Param[3]: rotationAxis (type: Vector3)
+  Param[4]: rotationAngle (type: float)
+  Param[5]: scale (type: Vector3)
+  Param[6]: tint (type: Color)
+Function 405: DrawBoundingBox() (2 input parameters)
+  Name: DrawBoundingBox
+  Return type: void
+  Description: Draw bounding box (wires)
+  Param[1]: box (type: BoundingBox)
+  Param[2]: color (type: Color)
+Function 406: DrawBillboard() (5 input parameters)
+  Name: DrawBillboard
+  Return type: void
+  Description: Draw a billboard texture
+  Param[1]: camera (type: Camera)
+  Param[2]: texture (type: Texture2D)
+  Param[3]: position (type: Vector3)
+  Param[4]: size (type: float)
+  Param[5]: tint (type: Color)
+Function 407: DrawBillboardRec() (6 input parameters)
+  Name: DrawBillboardRec
+  Return type: void
+  Description: Draw a billboard texture defined by source
+  Param[1]: camera (type: Camera)
+  Param[2]: texture (type: Texture2D)
+  Param[3]: source (type: Rectangle)
+  Param[4]: position (type: Vector3)
+  Param[5]: size (type: Vector2)
+  Param[6]: tint (type: Color)
+Function 408: DrawBillboardPro() (8 input parameters)
+  Name: DrawBillboardPro
+  Return type: void
+  Description: Draw a billboard texture defined by source and rotation
+  Param[1]: camera (type: Camera)
+  Param[2]: texture (type: Texture2D)
+  Param[3]: source (type: Rectangle)
+  Param[4]: position (type: Vector3)
+  Param[5]: size (type: Vector2)
+  Param[6]: origin (type: Vector2)
+  Param[7]: rotation (type: float)
+  Param[8]: tint (type: Color)
+Function 409: CheckCollisionSpheres() (4 input parameters)
+  Name: CheckCollisionSpheres
+  Return type: bool
+  Description: Check collision between two spheres
+  Param[1]: center1 (type: Vector3)
+  Param[2]: radius1 (type: float)
+  Param[3]: center2 (type: Vector3)
+  Param[4]: radius2 (type: float)
+Function 410: CheckCollisionBoxes() (2 input parameters)
+  Name: CheckCollisionBoxes
+  Return type: bool
+  Description: Check collision between two bounding boxes
+  Param[1]: box1 (type: BoundingBox)
+  Param[2]: box2 (type: BoundingBox)
+Function 411: CheckCollisionBoxSphere() (3 input parameters)
+  Name: CheckCollisionBoxSphere
+  Return type: bool
+  Description: Check collision between box and sphere
+  Param[1]: box (type: BoundingBox)
+  Param[2]: center (type: Vector3)
+  Param[3]: radius (type: float)
+Function 412: GetRayCollisionSphere() (3 input parameters)
+  Name: GetRayCollisionSphere
+  Return type: RayCollision
+  Description: Get collision info between ray and sphere
+  Param[1]: ray (type: Ray)
+  Param[2]: center (type: Vector3)
+  Param[3]: radius (type: float)
+Function 413: GetRayCollisionBox() (2 input parameters)
+  Name: GetRayCollisionBox
+  Return type: RayCollision
+  Description: Get collision info between ray and box
+  Param[1]: ray (type: Ray)
+  Param[2]: box (type: BoundingBox)
+Function 414: GetRayCollisionModel() (2 input parameters)
+  Name: GetRayCollisionModel
+  Return type: RayCollision
+  Description: Get collision info between ray and model
+  Param[1]: ray (type: Ray)
+  Param[2]: model (type: Model)
+Function 415: GetRayCollisionMesh() (3 input parameters)
+  Name: GetRayCollisionMesh
+  Return type: RayCollision
+  Description: Get collision info between ray and mesh
+  Param[1]: ray (type: Ray)
+  Param[2]: mesh (type: Mesh)
+  Param[3]: transform (type: Matrix)
+Function 416: GetRayCollisionTriangle() (4 input parameters)
+  Name: GetRayCollisionTriangle
+  Return type: RayCollision
+  Description: Get collision info between ray and triangle
+  Param[1]: ray (type: Ray)
+  Param[2]: p1 (type: Vector3)
+  Param[3]: p2 (type: Vector3)
+  Param[4]: p3 (type: Vector3)
+Function 417: GetRayCollisionQuad() (5 input parameters)
+  Name: GetRayCollisionQuad
+  Return type: RayCollision
+  Description: Get collision info between ray and quad
+  Param[1]: ray (type: Ray)
+  Param[2]: p1 (type: Vector3)
+  Param[3]: p2 (type: Vector3)
+  Param[4]: p3 (type: Vector3)
+  Param[5]: p4 (type: Vector3)
+Function 418: InitAudioDevice() (0 input parameters)
+  Name: InitAudioDevice
+  Return type: void
+  Description: Initialize audio device and context
+  No input parameters
+Function 419: CloseAudioDevice() (0 input parameters)
+  Name: CloseAudioDevice
+  Return type: void
+  Description: Close the audio device and context
+  No input parameters
+Function 420: IsAudioDeviceReady() (0 input parameters)
+  Name: IsAudioDeviceReady
+  Return type: bool
+  Description: Check if audio device has been initialized successfully
+  No input parameters
+Function 421: SetMasterVolume() (1 input parameters)
+  Name: SetMasterVolume
+  Return type: void
+  Description: Set master volume (listener)
+  Param[1]: volume (type: float)
+Function 422: LoadWave() (1 input parameters)
+  Name: LoadWave
+  Return type: Wave
+  Description: Load wave data from file
+  Param[1]: fileName (type: const char *)
+Function 423: LoadWaveFromMemory() (3 input parameters)
+  Name: LoadWaveFromMemory
+  Return type: Wave
+  Description: Load wave from memory buffer, fileType refers to extension: i.e. '.wav'
+  Param[1]: fileType (type: const char *)
+  Param[2]: fileData (type: const unsigned char *)
+  Param[3]: dataSize (type: int)
+Function 424: LoadSound() (1 input parameters)
+  Name: LoadSound
+  Return type: Sound
+  Description: Load sound from file
+  Param[1]: fileName (type: const char *)
+Function 425: LoadSoundFromWave() (1 input parameters)
+  Name: LoadSoundFromWave
+  Return type: Sound
+  Description: Load sound from wave data
+  Param[1]: wave (type: Wave)
+Function 426: UpdateSound() (3 input parameters)
+  Name: UpdateSound
+  Return type: void
+  Description: Update sound buffer with new data
+  Param[1]: sound (type: Sound)
+  Param[2]: data (type: const void *)
+  Param[3]: samplesCount (type: int)
+Function 427: UnloadWave() (1 input parameters)
+  Name: UnloadWave
+  Return type: void
+  Description: Unload wave data
+  Param[1]: wave (type: Wave)
+Function 428: UnloadSound() (1 input parameters)
+  Name: UnloadSound
+  Return type: void
+  Description: Unload sound
+  Param[1]: sound (type: Sound)
+Function 429: ExportWave() (2 input parameters)
+  Name: ExportWave
+  Return type: bool
+  Description: Export wave data to file, returns true on success
+  Param[1]: wave (type: Wave)
+  Param[2]: fileName (type: const char *)
+Function 430: ExportWaveAsCode() (2 input parameters)
+  Name: ExportWaveAsCode
+  Return type: bool
+  Description: Export wave sample data to code (.h), returns true on success
+  Param[1]: wave (type: Wave)
+  Param[2]: fileName (type: const char *)
+Function 431: PlaySound() (1 input parameters)
+  Name: PlaySound
+  Return type: void
+  Description: Play a sound
+  Param[1]: sound (type: Sound)
+Function 432: StopSound() (1 input parameters)
+  Name: StopSound
+  Return type: void
+  Description: Stop playing a sound
+  Param[1]: sound (type: Sound)
+Function 433: PauseSound() (1 input parameters)
+  Name: PauseSound
+  Return type: void
+  Description: Pause a sound
+  Param[1]: sound (type: Sound)
+Function 434: ResumeSound() (1 input parameters)
+  Name: ResumeSound
+  Return type: void
+  Description: Resume a paused sound
+  Param[1]: sound (type: Sound)
+Function 435: PlaySoundMulti() (1 input parameters)
+  Name: PlaySoundMulti
+  Return type: void
+  Description: Play a sound (using multichannel buffer pool)
+  Param[1]: sound (type: Sound)
+Function 436: StopSoundMulti() (0 input parameters)
+  Name: StopSoundMulti
+  Return type: void
+  Description: Stop any sound playing (using multichannel buffer pool)
+  No input parameters
+Function 437: GetSoundsPlaying() (0 input parameters)
+  Name: GetSoundsPlaying
+  Return type: int
+  Description: Get number of sounds playing in the multichannel
+  No input parameters
+Function 438: IsSoundPlaying() (1 input parameters)
+  Name: IsSoundPlaying
+  Return type: bool
+  Description: Check if a sound is currently playing
+  Param[1]: sound (type: Sound)
+Function 439: SetSoundVolume() (2 input parameters)
+  Name: SetSoundVolume
+  Return type: void
+  Description: Set volume for a sound (1.0 is max level)
+  Param[1]: sound (type: Sound)
+  Param[2]: volume (type: float)
+Function 440: SetSoundPitch() (2 input parameters)
+  Name: SetSoundPitch
+  Return type: void
+  Description: Set pitch for a sound (1.0 is base level)
+  Param[1]: sound (type: Sound)
+  Param[2]: pitch (type: float)
+Function 441: WaveFormat() (4 input parameters)
+  Name: WaveFormat
+  Return type: void
+  Description: Convert wave data to desired format
+  Param[1]: wave (type: Wave *)
+  Param[2]: sampleRate (type: int)
+  Param[3]: sampleSize (type: int)
+  Param[4]: channels (type: int)
+Function 442: WaveCopy() (1 input parameters)
+  Name: WaveCopy
+  Return type: Wave
+  Description: Copy a wave to a new wave
+  Param[1]: wave (type: Wave)
+Function 443: WaveCrop() (3 input parameters)
+  Name: WaveCrop
+  Return type: void
+  Description: Crop a wave to defined samples range
+  Param[1]: wave (type: Wave *)
+  Param[2]: initSample (type: int)
+  Param[3]: finalSample (type: int)
+Function 444: LoadWaveSamples() (1 input parameters)
+  Name: LoadWaveSamples
+  Return type: float *
+  Description: Load samples data from wave as a floats array
+  Param[1]: wave (type: Wave)
+Function 445: UnloadWaveSamples() (1 input parameters)
+  Name: UnloadWaveSamples
+  Return type: void
+  Description: Unload samples data loaded with LoadWaveSamples()
+  Param[1]: samples (type: float *)
+Function 446: LoadMusicStream() (1 input parameters)
+  Name: LoadMusicStream
+  Return type: Music
+  Description: Load music stream from file
+  Param[1]: fileName (type: const char *)
+Function 447: LoadMusicStreamFromMemory() (3 input parameters)
+  Name: LoadMusicStreamFromMemory
+  Return type: Music
+  Description: Load music stream from data
+  Param[1]: fileType (type: const char *)
+  Param[2]: data (type: unsigned char *)
+  Param[3]: dataSize (type: int)
+Function 448: UnloadMusicStream() (1 input parameters)
+  Name: UnloadMusicStream
+  Return type: void
+  Description: Unload music stream
+  Param[1]: music (type: Music)
+Function 449: PlayMusicStream() (1 input parameters)
+  Name: PlayMusicStream
+  Return type: void
+  Description: Start music playing
+  Param[1]: music (type: Music)
+Function 450: IsMusicStreamPlaying() (1 input parameters)
+  Name: IsMusicStreamPlaying
+  Return type: bool
+  Description: Check if music is playing
+  Param[1]: music (type: Music)
+Function 451: UpdateMusicStream() (1 input parameters)
+  Name: UpdateMusicStream
+  Return type: void
+  Description: Updates buffers for music streaming
+  Param[1]: music (type: Music)
+Function 452: StopMusicStream() (1 input parameters)
+  Name: StopMusicStream
+  Return type: void
+  Description: Stop music playing
+  Param[1]: music (type: Music)
+Function 453: PauseMusicStream() (1 input parameters)
+  Name: PauseMusicStream
+  Return type: void
+  Description: Pause music playing
+  Param[1]: music (type: Music)
+Function 454: ResumeMusicStream() (1 input parameters)
+  Name: ResumeMusicStream
+  Return type: void
+  Description: Resume playing paused music
+  Param[1]: music (type: Music)
+Function 455: SetMusicVolume() (2 input parameters)
+  Name: SetMusicVolume
+  Return type: void
+  Description: Set volume for music (1.0 is max level)
+  Param[1]: music (type: Music)
+  Param[2]: volume (type: float)
+Function 456: SetMusicPitch() (2 input parameters)
+  Name: SetMusicPitch
+  Return type: void
+  Description: Set pitch for a music (1.0 is base level)
+  Param[1]: music (type: Music)
+  Param[2]: pitch (type: float)
+Function 457: GetMusicTimeLength() (1 input parameters)
+  Name: GetMusicTimeLength
+  Return type: float
+  Description: Get music time length (in seconds)
+  Param[1]: music (type: Music)
+Function 458: GetMusicTimePlayed() (1 input parameters)
+  Name: GetMusicTimePlayed
+  Return type: float
+  Description: Get current music time played (in seconds)
+  Param[1]: music (type: Music)
+Function 459: LoadAudioStream() (3 input parameters)
+  Name: LoadAudioStream
+  Return type: AudioStream
+  Description: Load audio stream (to stream raw audio pcm data)
+  Param[1]: sampleRate (type: unsigned int)
+  Param[2]: sampleSize (type: unsigned int)
+  Param[3]: channels (type: unsigned int)
+Function 460: UnloadAudioStream() (1 input parameters)
+  Name: UnloadAudioStream
+  Return type: void
+  Description: Unload audio stream and free memory
+  Param[1]: stream (type: AudioStream)
+Function 461: UpdateAudioStream() (3 input parameters)
+  Name: UpdateAudioStream
+  Return type: void
+  Description: Update audio stream buffers with data
+  Param[1]: stream (type: AudioStream)
+  Param[2]: data (type: const void *)
+  Param[3]: samplesCount (type: int)
+Function 462: IsAudioStreamProcessed() (1 input parameters)
+  Name: IsAudioStreamProcessed
+  Return type: bool
+  Description: Check if any audio stream buffers requires refill
+  Param[1]: stream (type: AudioStream)
+Function 463: PlayAudioStream() (1 input parameters)
+  Name: PlayAudioStream
+  Return type: void
+  Description: Play audio stream
+  Param[1]: stream (type: AudioStream)
+Function 464: PauseAudioStream() (1 input parameters)
+  Name: PauseAudioStream
+  Return type: void
+  Description: Pause audio stream
+  Param[1]: stream (type: AudioStream)
+Function 465: ResumeAudioStream() (1 input parameters)
+  Name: ResumeAudioStream
+  Return type: void
+  Description: Resume audio stream
+  Param[1]: stream (type: AudioStream)
+Function 466: IsAudioStreamPlaying() (1 input parameters)
+  Name: IsAudioStreamPlaying
+  Return type: bool
+  Description: Check if audio stream is playing
+  Param[1]: stream (type: AudioStream)
+Function 467: StopAudioStream() (1 input parameters)
+  Name: StopAudioStream
+  Return type: void
+  Description: Stop audio stream
+  Param[1]: stream (type: AudioStream)
+Function 468: SetAudioStreamVolume() (2 input parameters)
+  Name: SetAudioStreamVolume
+  Return type: void
+  Description: Set volume for audio stream (1.0 is max level)
+  Param[1]: stream (type: AudioStream)
+  Param[2]: volume (type: float)
+Function 469: SetAudioStreamPitch() (2 input parameters)
+  Name: SetAudioStreamPitch
+  Return type: void
+  Description: Set pitch for audio stream (1.0 is base level)
+  Param[1]: stream (type: AudioStream)
+  Param[2]: pitch (type: float)
+Function 470: SetAudioStreamBufferSizeDefault() (1 input parameters)
+  Name: SetAudioStreamBufferSizeDefault
+  Return type: void
+  Description: Default size for new audio streams
+  Param[1]: size (type: int)

+ 2509 - 0
parser/raylib_api.xml

@@ -0,0 +1,2509 @@
+<?xml version="1.0" encoding="Windows-1252" ?>
+<raylibAPI>
+    <Structs count="31">
+        <Struct name="Vector2" fieldCount="2" desc="">
+            <Field type="float" name="x" desc="Vector x component" />
+            <Field type="float" name="y" desc="Vector y component" />
+        </Struct>
+        <Struct name="Vector3" fieldCount="3" desc="">
+            <Field type="float" name="x" desc="Vector x component" />
+            <Field type="float" name="y" desc="Vector y component" />
+            <Field type="float" name="z" desc="Vector z component" />
+        </Struct>
+        <Struct name="Vector4" fieldCount="4" desc="">
+            <Field type="float" name="x" desc="Vector x component" />
+            <Field type="float" name="y" desc="Vector y component" />
+            <Field type="float" name="z" desc="Vector z component" />
+            <Field type="float" name="w" desc="Vector w component" />
+        </Struct>
+        <Struct name="Matrix" fieldCount="4" desc="">
+            <Field type="float" name="m0, m4, m8, m12" desc="Matrix first row (4 components)" />
+            <Field type="float" name="m1, m5, m9, m13" desc="Matrix second row (4 components)" />
+            <Field type="float" name="m2, m6, m10, m14" desc="Matrix third row (4 components)" />
+            <Field type="float" name="m3, m7, m11, m15" desc="Matrix fourth row (4 components)" />
+        </Struct>
+        <Struct name="Color" fieldCount="4" desc="">
+            <Field type="unsigned char" name="r" desc="Color red value" />
+            <Field type="unsigned char" name="g" desc="Color green value" />
+            <Field type="unsigned char" name="b" desc="Color blue value" />
+            <Field type="unsigned char" name="a" desc="Color alpha value" />
+        </Struct>
+        <Struct name="Rectangle" fieldCount="4" desc="">
+            <Field type="float" name="x" desc="Rectangle top-left corner position x " />
+            <Field type="float" name="y" desc="Rectangle top-left corner position y" />
+            <Field type="float" name="width" desc="Rectangle width" />
+            <Field type="float" name="height" desc="Rectangle height" />
+        </Struct>
+        <Struct name="Image" fieldCount="5" desc="">
+            <Field type="void *" name="data" desc="Image raw data" />
+            <Field type="int" name="width" desc="Image base width" />
+            <Field type="int" name="height" desc="Image base height" />
+            <Field type="int" name="mipmaps" desc="Mipmap levels, 1 by default" />
+            <Field type="int" name="format" desc="Data format (PixelFormat type)" />
+        </Struct>
+        <Struct name="Texture" fieldCount="5" desc="">
+            <Field type="unsigned int" name="id" desc="OpenGL texture id" />
+            <Field type="int" name="width" desc="Texture base width" />
+            <Field type="int" name="height" desc="Texture base height" />
+            <Field type="int" name="mipmaps" desc="Mipmap levels, 1 by default" />
+            <Field type="int" name="format" desc="Data format (PixelFormat type)" />
+        </Struct>
+        <Struct name="RenderTexture" fieldCount="3" desc="">
+            <Field type="unsigned int" name="id" desc="OpenGL framebuffer object id" />
+            <Field type="Texture" name="texture" desc="Color buffer attachment texture" />
+            <Field type="Texture" name="depth" desc="Depth buffer attachment texture" />
+        </Struct>
+        <Struct name="NPatchInfo" fieldCount="6" desc="">
+            <Field type="Rectangle" name="source" desc="Texture source rectangle" />
+            <Field type="int" name="left" desc="Left border offset" />
+            <Field type="int" name="top" desc="Top border offset" />
+            <Field type="int" name="right" desc="Right border offset" />
+            <Field type="int" name="bottom" desc="Bottom border offset" />
+            <Field type="int" name="layout" desc="Layout of the n-patch: 3x3, 1x3 or 3x1" />
+        </Struct>
+        <Struct name="CharInfo" fieldCount="5" desc="">
+            <Field type="int" name="value" desc="Character value (Unicode)" />
+            <Field type="int" name="offsetX" desc="Character offset X when drawing" />
+            <Field type="int" name="offsetY" desc="Character offset Y when drawing" />
+            <Field type="int" name="advanceX" desc="Character advance position X" />
+            <Field type="Image" name="image" desc="Character image data" />
+        </Struct>
+        <Struct name="Font" fieldCount="6" desc="">
+            <Field type="int" name="baseSize" desc="Base size (default chars height)" />
+            <Field type="int" name="charsCount" desc="Number of characters" />
+            <Field type="int" name="charsPadding" desc="Padding around the chars" />
+            <Field type="Texture2D" name="texture" desc="Characters texture atlas" />
+            <Field type="Rectangle *" name="recs" desc="Characters rectangles in texture" />
+            <Field type="CharInfo *" name="chars" desc="Characters info data" />
+        </Struct>
+        <Struct name="Camera3D" fieldCount="5" desc="">
+            <Field type="Vector3" name="position" desc="Camera position" />
+            <Field type="Vector3" name="target" desc="Camera target it looks-at" />
+            <Field type="Vector3" name="up" desc="Camera up vector (rotation over its axis)" />
+            <Field type="float" name="fovy" desc="Camera field-of-view apperture in Y (degrees) in perspective, used as near plane width in orthographic" />
+            <Field type="int" name="projection" desc="Camera projection: CAMERA_PERSPECTIVE or CAMERA_ORTHOGRAPHIC" />
+        </Struct>
+        <Struct name="Camera2D" fieldCount="4" desc="">
+            <Field type="Vector2" name="offset" desc="Camera offset (displacement from target)" />
+            <Field type="Vector2" name="target" desc="Camera target (rotation and zoom origin)" />
+            <Field type="float" name="rotation" desc="Camera rotation in degrees" />
+            <Field type="float" name="zoom" desc="Camera zoom (scaling), should be 1.0f by default" />
+        </Struct>
+        <Struct name="Mesh" fieldCount="15" desc="">
+            <Field type="int" name="vertexCount" desc="Number of vertices stored in arrays" />
+            <Field type="int" name="triangleCount" desc="Number of triangles stored (indexed or not)" />
+            <Field type="float *" name="vertices" desc="Vertex position (XYZ - 3 components per vertex) (shader-location = 0)" />
+            <Field type="float *" name="texcoords" desc="Vertex texture coordinates (UV - 2 components per vertex) (shader-location = 1)" />
+            <Field type="float *" name="texcoords2" desc="Vertex second texture coordinates (useful for lightmaps) (shader-location = 5)" />
+            <Field type="float *" name="normals" desc="Vertex normals (XYZ - 3 components per vertex) (shader-location = 2)" />
+            <Field type="float *" name="tangents" desc="Vertex tangents (XYZW - 4 components per vertex) (shader-location = 4)" />
+            <Field type="unsigned char *" name="colors" desc="Vertex colors (RGBA - 4 components per vertex) (shader-location = 3)" />
+            <Field type="unsigned short *" name="indices" desc="Vertex indices (in case vertex data comes indexed)" />
+            <Field type="float *" name="animVertices" desc="Animated vertex positions (after bones transformations)" />
+            <Field type="float *" name="animNormals" desc="Animated normals (after bones transformations)" />
+            <Field type="int *" name="boneIds" desc="Vertex bone ids, up to 4 bones influence by vertex (skinning)" />
+            <Field type="float *" name="boneWeights" desc="Vertex bone weight, up to 4 bones influence by vertex (skinning)" />
+            <Field type="unsigned int" name="vaoId" desc="OpenGL Vertex Array Object id" />
+            <Field type="unsigned int *" name="vboId" desc="OpenGL Vertex Buffer Objects id (default vertex data)" />
+        </Struct>
+        <Struct name="Shader" fieldCount="2" desc="">
+            <Field type="unsigned int" name="id" desc="Shader program id" />
+            <Field type="int *" name="locs" desc="Shader locations array (MAX_SHADER_LOCATIONS)" />
+        </Struct>
+        <Struct name="MaterialMap" fieldCount="3" desc="">
+            <Field type="Texture2D" name="texture" desc="Material map texture" />
+            <Field type="Color" name="color" desc="Material map color" />
+            <Field type="float" name="value" desc="Material map value" />
+        </Struct>
+        <Struct name="Material" fieldCount="3" desc="">
+            <Field type="Shader" name="shader" desc="Material shader" />
+            <Field type="MaterialMap *" name="maps" desc="Material maps array (MAX_MATERIAL_MAPS)" />
+            <Field type="float" name="params[4]" desc="Material generic parameters (if required)" />
+        </Struct>
+        <Struct name="Transform" fieldCount="3" desc="">
+            <Field type="Vector3" name="translation" desc="Translation" />
+            <Field type="Quaternion" name="rotation" desc="Rotation" />
+            <Field type="Vector3" name="scale" desc="Scale" />
+        </Struct>
+        <Struct name="BoneInfo" fieldCount="2" desc="">
+            <Field type="char" name="name[32]" desc="Bone name" />
+            <Field type="int" name="parent" desc="Bone parent" />
+        </Struct>
+        <Struct name="Model" fieldCount="9" desc="">
+            <Field type="Matrix" name="transform" desc="Local transform matrix" />
+            <Field type="int" name="meshCount" desc="Number of meshes" />
+            <Field type="int" name="materialCount" desc="Number of materials" />
+            <Field type="Mesh *" name="meshes" desc="Meshes array" />
+            <Field type="Material *" name="materials" desc="Materials array" />
+            <Field type="int *" name="meshMaterial" desc="Mesh material number" />
+            <Field type="int" name="boneCount" desc="Number of bones" />
+            <Field type="BoneInfo *" name="bones" desc="Bones information (skeleton)" />
+            <Field type="Transform *" name="bindPose" desc="Bones base transformation (pose)" />
+        </Struct>
+        <Struct name="ModelAnimation" fieldCount="4" desc="">
+            <Field type="int" name="boneCount" desc="Number of bones" />
+            <Field type="int" name="frameCount" desc="Number of animation frames" />
+            <Field type="BoneInfo *" name="bones" desc="Bones information (skeleton)" />
+            <Field type="Transform **" name="framePoses" desc="Poses array by frame" />
+        </Struct>
+        <Struct name="Ray" fieldCount="2" desc="">
+            <Field type="Vector3" name="position" desc="Ray position (origin)" />
+            <Field type="Vector3" name="direction" desc="Ray direction" />
+        </Struct>
+        <Struct name="RayCollision" fieldCount="4" desc="">
+            <Field type="bool" name="hit" desc="Did the ray hit something?" />
+            <Field type="float" name="distance" desc="Distance to nearest hit" />
+            <Field type="Vector3" name="point" desc="Point of nearest hit" />
+            <Field type="Vector3" name="normal" desc="Surface normal of hit" />
+        </Struct>
+        <Struct name="BoundingBox" fieldCount="2" desc="">
+            <Field type="Vector3" name="min" desc="Minimum vertex box-corner" />
+            <Field type="Vector3" name="max" desc="Maximum vertex box-corner" />
+        </Struct>
+        <Struct name="Wave" fieldCount="5" desc="">
+            <Field type="unsigned int" name="sampleCount" desc="Total number of samples (considering channels!)" />
+            <Field type="unsigned int" name="sampleRate" desc="Frequency (samples per second)" />
+            <Field type="unsigned int" name="sampleSize" desc="Bit depth (bits per sample): 8, 16, 32 (24 not supported)" />
+            <Field type="unsigned int" name="channels" desc="Number of channels (1-mono, 2-stereo)" />
+            <Field type="void *" name="data" desc="Buffer data pointer" />
+        </Struct>
+        <Struct name="AudioStream" fieldCount="4" desc="">
+            <Field type="rAudioBuffer *" name="buffer" desc="Pointer to internal data used by the audio system" />
+            <Field type="unsigned int" name="sampleRate" desc="Frequency (samples per second)" />
+            <Field type="unsigned int" name="sampleSize" desc="Bit depth (bits per sample): 8, 16, 32 (24 not supported)" />
+            <Field type="unsigned int" name="channels" desc="Number of channels (1-mono, 2-stereo)" />
+        </Struct>
+        <Struct name="Sound" fieldCount="2" desc="">
+            <Field type="AudioStream" name="stream" desc="Audio stream" />
+            <Field type="unsigned int" name="sampleCount" desc="Total number of samples" />
+        </Struct>
+        <Struct name="Music" fieldCount="5" desc="">
+            <Field type="AudioStream" name="stream" desc="Audio stream" />
+            <Field type="unsigned int" name="sampleCount" desc="Total number of samples" />
+            <Field type="bool" name="looping" desc="Music looping enable" />
+            <Field type="int" name="ctxType" desc="Type of music context (audio filetype)" />
+            <Field type="void *" name="ctxData" desc="Audio context data, depends on type" />
+        </Struct>
+        <Struct name="VrDeviceInfo" fieldCount="10" desc="">
+            <Field type="int" name="hResolution" desc="Horizontal resolution in pixels" />
+            <Field type="int" name="vResolution" desc="Vertical resolution in pixels" />
+            <Field type="float" name="hScreenSize" desc="Horizontal size in meters" />
+            <Field type="float" name="vScreenSize" desc="Vertical size in meters" />
+            <Field type="float" name="vScreenCenter" desc="Screen center in meters" />
+            <Field type="float" name="eyeToScreenDistance" desc="Distance between eye and display in meters" />
+            <Field type="float" name="lensSeparationDistance" desc="Lens separation distance in meters" />
+            <Field type="float" name="interpupillaryDistance" desc="IPD (distance between pupils) in meters" />
+            <Field type="float" name="lensDistortionValues[4]" desc="Lens distortion constant parameters" />
+            <Field type="float" name="chromaAbCorrection[4]" desc="Chromatic aberration correction parameters" />
+        </Struct>
+        <Struct name="VrStereoConfig" fieldCount="8" desc="">
+            <Field type="Matrix" name="projection[2]" desc="VR projection matrices (per eye)" />
+            <Field type="Matrix" name="viewOffset[2]" desc="VR view offset matrices (per eye)" />
+            <Field type="float" name="leftLensCenter[2]" desc="VR left lens center" />
+            <Field type="float" name="rightLensCenter[2]" desc="VR right lens center" />
+            <Field type="float" name="leftScreenCenter[2]" desc="VR left screen center" />
+            <Field type="float" name="rightScreenCenter[2]" desc="VR right screen center" />
+            <Field type="float" name="scale[2]" desc="VR distortion scale" />
+            <Field type="float" name="scaleIn[2]" desc="VR distortion scale in" />
+        </Struct>
+    </Structs>
+    <Enums count="21">
+        <Enum name="ConfigFlags" valueCount="14" desc="">
+            <Value name="FLAG_VSYNC_HINT" integer="64" desc="" />
+            <Value name="FLAG_FULLSCREEN_MODE" integer="2" desc="" />
+            <Value name="FLAG_WINDOW_RESIZABLE" integer="4" desc="" />
+            <Value name="FLAG_WINDOW_UNDECORATED" integer="8" desc="" />
+            <Value name="FLAG_WINDOW_HIDDEN" integer="128" desc="" />
+            <Value name="FLAG_WINDOW_MINIMIZED" integer="512" desc="" />
+            <Value name="FLAG_WINDOW_MAXIMIZED" integer="1024" desc="" />
+            <Value name="FLAG_WINDOW_UNFOCUSED" integer="2048" desc="" />
+            <Value name="FLAG_WINDOW_TOPMOST" integer="4096" desc="" />
+            <Value name="FLAG_WINDOW_ALWAYS_RUN" integer="256" desc="" />
+            <Value name="FLAG_WINDOW_TRANSPARENT" integer="16" desc="" />
+            <Value name="FLAG_WINDOW_HIGHDPI" integer="8192" desc="" />
+            <Value name="FLAG_MSAA_4X_HINT" integer="32" desc="" />
+            <Value name="FLAG_INTERLACED_HINT" integer="65536" desc="" />
+        </Enum>
+        <Enum name="TraceLogLevel" valueCount="8" desc="">
+            <Value name="LOG_ALL" integer="0" desc="" />
+            <Value name="LOG_TRACE" integer="1" desc="" />
+            <Value name="LOG_DEBUG" integer="2" desc="" />
+            <Value name="LOG_INFO" integer="3" desc="" />
+            <Value name="LOG_WARNING" integer="4" desc="" />
+            <Value name="LOG_ERROR" integer="5" desc="" />
+            <Value name="LOG_FATAL" integer="6" desc="" />
+            <Value name="LOG_NONE" integer="7" desc="" />
+        </Enum>
+        <Enum name="KeyboardKey" valueCount="110" desc="">
+            <Value name="KEY_NULL" integer="0" desc="" />
+            <Value name="KEY_APOSTROPHE" integer="39" desc="" />
+            <Value name="KEY_COMMA" integer="44" desc="" />
+            <Value name="KEY_MINUS" integer="45" desc="" />
+            <Value name="KEY_PERIOD" integer="46" desc="" />
+            <Value name="KEY_SLASH" integer="47" desc="" />
+            <Value name="KEY_ZERO" integer="48" desc="" />
+            <Value name="KEY_ONE" integer="49" desc="" />
+            <Value name="KEY_TWO" integer="50" desc="" />
+            <Value name="KEY_THREE" integer="51" desc="" />
+            <Value name="KEY_FOUR" integer="52" desc="" />
+            <Value name="KEY_FIVE" integer="53" desc="" />
+            <Value name="KEY_SIX" integer="54" desc="" />
+            <Value name="KEY_SEVEN" integer="55" desc="" />
+            <Value name="KEY_EIGHT" integer="56" desc="" />
+            <Value name="KEY_NINE" integer="57" desc="" />
+            <Value name="KEY_SEMICOLON" integer="59" desc="" />
+            <Value name="KEY_EQUAL" integer="61" desc="" />
+            <Value name="KEY_A" integer="65" desc="" />
+            <Value name="KEY_B" integer="66" desc="" />
+            <Value name="KEY_C" integer="67" desc="" />
+            <Value name="KEY_D" integer="68" desc="" />
+            <Value name="KEY_E" integer="69" desc="" />
+            <Value name="KEY_F" integer="70" desc="" />
+            <Value name="KEY_G" integer="71" desc="" />
+            <Value name="KEY_H" integer="72" desc="" />
+            <Value name="KEY_I" integer="73" desc="" />
+            <Value name="KEY_J" integer="74" desc="" />
+            <Value name="KEY_K" integer="75" desc="" />
+            <Value name="KEY_L" integer="76" desc="" />
+            <Value name="KEY_M" integer="77" desc="" />
+            <Value name="KEY_N" integer="78" desc="" />
+            <Value name="KEY_O" integer="79" desc="" />
+            <Value name="KEY_P" integer="80" desc="" />
+            <Value name="KEY_Q" integer="81" desc="" />
+            <Value name="KEY_R" integer="82" desc="" />
+            <Value name="KEY_S" integer="83" desc="" />
+            <Value name="KEY_T" integer="84" desc="" />
+            <Value name="KEY_U" integer="85" desc="" />
+            <Value name="KEY_V" integer="86" desc="" />
+            <Value name="KEY_W" integer="87" desc="" />
+            <Value name="KEY_X" integer="88" desc="" />
+            <Value name="KEY_Y" integer="89" desc="" />
+            <Value name="KEY_Z" integer="90" desc="" />
+            <Value name="KEY_SPACE" integer="32" desc="" />
+            <Value name="KEY_ESCAPE" integer="256" desc="" />
+            <Value name="KEY_ENTER" integer="257" desc="" />
+            <Value name="KEY_TAB" integer="258" desc="" />
+            <Value name="KEY_BACKSPACE" integer="259" desc="" />
+            <Value name="KEY_INSERT" integer="260" desc="" />
+            <Value name="KEY_DELETE" integer="261" desc="" />
+            <Value name="KEY_RIGHT" integer="262" desc="" />
+            <Value name="KEY_LEFT" integer="263" desc="" />
+            <Value name="KEY_DOWN" integer="264" desc="" />
+            <Value name="KEY_UP" integer="265" desc="" />
+            <Value name="KEY_PAGE_UP" integer="266" desc="" />
+            <Value name="KEY_PAGE_DOWN" integer="267" desc="" />
+            <Value name="KEY_HOME" integer="268" desc="" />
+            <Value name="KEY_END" integer="269" desc="" />
+            <Value name="KEY_CAPS_LOCK" integer="280" desc="" />
+            <Value name="KEY_SCROLL_LOCK" integer="281" desc="" />
+            <Value name="KEY_NUM_LOCK" integer="282" desc="" />
+            <Value name="KEY_PRINT_SCREEN" integer="283" desc="" />
+            <Value name="KEY_PAUSE" integer="284" desc="" />
+            <Value name="KEY_F1" integer="290" desc="" />
+            <Value name="KEY_F2" integer="291" desc="" />
+            <Value name="KEY_F3" integer="292" desc="" />
+            <Value name="KEY_F4" integer="293" desc="" />
+            <Value name="KEY_F5" integer="294" desc="" />
+            <Value name="KEY_F6" integer="295" desc="" />
+            <Value name="KEY_F7" integer="296" desc="" />
+            <Value name="KEY_F8" integer="297" desc="" />
+            <Value name="KEY_F9" integer="298" desc="" />
+            <Value name="KEY_F10" integer="299" desc="" />
+            <Value name="KEY_F11" integer="300" desc="" />
+            <Value name="KEY_F12" integer="301" desc="" />
+            <Value name="KEY_LEFT_SHIFT" integer="340" desc="" />
+            <Value name="KEY_LEFT_CONTROL" integer="341" desc="" />
+            <Value name="KEY_LEFT_ALT" integer="342" desc="" />
+            <Value name="KEY_LEFT_SUPER" integer="343" desc="" />
+            <Value name="KEY_RIGHT_SHIFT" integer="344" desc="" />
+            <Value name="KEY_RIGHT_CONTROL" integer="345" desc="" />
+            <Value name="KEY_RIGHT_ALT" integer="346" desc="" />
+            <Value name="KEY_RIGHT_SUPER" integer="347" desc="" />
+            <Value name="KEY_KB_MENU" integer="348" desc="" />
+            <Value name="KEY_LEFT_BRACKET" integer="91" desc="" />
+            <Value name="KEY_BACKSLASH" integer="92" desc="" />
+            <Value name="KEY_RIGHT_BRACKET" integer="93" desc="" />
+            <Value name="KEY_GRAVE" integer="96" desc="" />
+            <Value name="KEY_KP_0" integer="320" desc="" />
+            <Value name="KEY_KP_1" integer="321" desc="" />
+            <Value name="KEY_KP_2" integer="322" desc="" />
+            <Value name="KEY_KP_3" integer="323" desc="" />
+            <Value name="KEY_KP_4" integer="324" desc="" />
+            <Value name="KEY_KP_5" integer="325" desc="" />
+            <Value name="KEY_KP_6" integer="326" desc="" />
+            <Value name="KEY_KP_7" integer="327" desc="" />
+            <Value name="KEY_KP_8" integer="328" desc="" />
+            <Value name="KEY_KP_9" integer="329" desc="" />
+            <Value name="KEY_KP_DECIMAL" integer="330" desc="" />
+            <Value name="KEY_KP_DIVIDE" integer="331" desc="" />
+            <Value name="KEY_KP_MULTIPLY" integer="332" desc="" />
+            <Value name="KEY_KP_SUBTRACT" integer="333" desc="" />
+            <Value name="KEY_KP_ADD" integer="334" desc="" />
+            <Value name="KEY_KP_ENTER" integer="335" desc="" />
+            <Value name="KEY_KP_EQUAL" integer="336" desc="" />
+            <Value name="KEY_BACK" integer="4" desc="" />
+            <Value name="KEY_MENU" integer="82" desc="" />
+            <Value name="KEY_VOLUME_UP" integer="24" desc="" />
+            <Value name="KEY_VOLUME_DOWN" integer="25" desc="" />
+        </Enum>
+        <Enum name="MouseButton" valueCount="7" desc="">
+            <Value name="MOUSE_BUTTON_LEFT" integer="0" desc="" />
+            <Value name="MOUSE_BUTTON_RIGHT" integer="1" desc="" />
+            <Value name="MOUSE_BUTTON_MIDDLE" integer="2" desc="" />
+            <Value name="MOUSE_BUTTON_SIDE" integer="3" desc="" />
+            <Value name="MOUSE_BUTTON_EXTRA" integer="4" desc="" />
+            <Value name="MOUSE_BUTTON_FORWARD" integer="5" desc="" />
+            <Value name="MOUSE_BUTTON_BACK" integer="6" desc="" />
+        </Enum>
+        <Enum name="MouseCursor" valueCount="11" desc="">
+            <Value name="MOUSE_CURSOR_DEFAULT" integer="0" desc="" />
+            <Value name="MOUSE_CURSOR_ARROW" integer="1" desc="" />
+            <Value name="MOUSE_CURSOR_IBEAM" integer="2" desc="" />
+            <Value name="MOUSE_CURSOR_CROSSHAIR" integer="3" desc="" />
+            <Value name="MOUSE_CURSOR_POINTING_HAND" integer="4" desc="" />
+            <Value name="MOUSE_CURSOR_RESIZE_EW" integer="5" desc="" />
+            <Value name="MOUSE_CURSOR_RESIZE_NS" integer="6" desc="" />
+            <Value name="MOUSE_CURSOR_RESIZE_NWSE" integer="7" desc="" />
+            <Value name="MOUSE_CURSOR_RESIZE_NESW" integer="8" desc="" />
+            <Value name="MOUSE_CURSOR_RESIZE_ALL" integer="9" desc="" />
+            <Value name="MOUSE_CURSOR_NOT_ALLOWED" integer="10" desc="" />
+        </Enum>
+        <Enum name="GamepadButton" valueCount="18" desc="">
+            <Value name="GAMEPAD_BUTTON_UNKNOWN" integer="0" desc="" />
+            <Value name="GAMEPAD_BUTTON_LEFT_FACE_UP" integer="1" desc="" />
+            <Value name="GAMEPAD_BUTTON_LEFT_FACE_RIGHT" integer="2" desc="" />
+            <Value name="GAMEPAD_BUTTON_LEFT_FACE_DOWN" integer="3" desc="" />
+            <Value name="GAMEPAD_BUTTON_LEFT_FACE_LEFT" integer="4" desc="" />
+            <Value name="GAMEPAD_BUTTON_RIGHT_FACE_UP" integer="5" desc="" />
+            <Value name="GAMEPAD_BUTTON_RIGHT_FACE_RIGHT" integer="6" desc="" />
+            <Value name="GAMEPAD_BUTTON_RIGHT_FACE_DOWN" integer="7" desc="" />
+            <Value name="GAMEPAD_BUTTON_RIGHT_FACE_LEFT" integer="8" desc="" />
+            <Value name="GAMEPAD_BUTTON_LEFT_TRIGGER_1" integer="9" desc="" />
+            <Value name="GAMEPAD_BUTTON_LEFT_TRIGGER_2" integer="10" desc="" />
+            <Value name="GAMEPAD_BUTTON_RIGHT_TRIGGER_1" integer="11" desc="" />
+            <Value name="GAMEPAD_BUTTON_RIGHT_TRIGGER_2" integer="12" desc="" />
+            <Value name="GAMEPAD_BUTTON_MIDDLE_LEFT" integer="13" desc="" />
+            <Value name="GAMEPAD_BUTTON_MIDDLE" integer="14" desc="" />
+            <Value name="GAMEPAD_BUTTON_MIDDLE_RIGHT" integer="15" desc="" />
+            <Value name="GAMEPAD_BUTTON_LEFT_THUMB" integer="16" desc="" />
+            <Value name="GAMEPAD_BUTTON_RIGHT_THUMB" integer="17" desc="" />
+        </Enum>
+        <Enum name="GamepadAxis" valueCount="6" desc="">
+            <Value name="GAMEPAD_AXIS_LEFT_X" integer="0" desc="" />
+            <Value name="GAMEPAD_AXIS_LEFT_Y" integer="1" desc="" />
+            <Value name="GAMEPAD_AXIS_RIGHT_X" integer="2" desc="" />
+            <Value name="GAMEPAD_AXIS_RIGHT_Y" integer="3" desc="" />
+            <Value name="GAMEPAD_AXIS_LEFT_TRIGGER" integer="4" desc="" />
+            <Value name="GAMEPAD_AXIS_RIGHT_TRIGGER" integer="5" desc="" />
+        </Enum>
+        <Enum name="MaterialMapIndex" valueCount="11" desc="">
+            <Value name="MATERIAL_MAP_ALBEDO" integer="0" desc="" />
+            <Value name="MATERIAL_MAP_METALNESS" integer="1" desc="" />
+            <Value name="MATERIAL_MAP_NORMAL" integer="2" desc="" />
+            <Value name="MATERIAL_MAP_ROUGHNESS" integer="3" desc="" />
+            <Value name="MATERIAL_MAP_OCCLUSION" integer="4" desc="" />
+            <Value name="MATERIAL_MAP_EMISSION" integer="5" desc="" />
+            <Value name="MATERIAL_MAP_HEIGHT" integer="6" desc="" />
+            <Value name="MATERIAL_MAP_CUBEMAP" integer="7" desc="" />
+            <Value name="MATERIAL_MAP_IRRADIANCE" integer="8" desc="" />
+            <Value name="MATERIAL_MAP_PREFILTER" integer="9" desc="" />
+            <Value name="MATERIAL_MAP_BRDG" integer="10" desc="" />
+        </Enum>
+        <Enum name="ShaderLocationIndex" valueCount="26" desc="">
+            <Value name="SHADER_LOC_VERTEX_POSITION" integer="0" desc="" />
+            <Value name="SHADER_LOC_VERTEX_TEXCOORD01" integer="1" desc="" />
+            <Value name="SHADER_LOC_VERTEX_TEXCOORD02" integer="2" desc="" />
+            <Value name="SHADER_LOC_VERTEX_NORMAL" integer="3" desc="" />
+            <Value name="SHADER_LOC_VERTEX_TANGENT" integer="4" desc="" />
+            <Value name="SHADER_LOC_VERTEX_COLOR" integer="5" desc="" />
+            <Value name="SHADER_LOC_MATRIX_MVP" integer="6" desc="" />
+            <Value name="SHADER_LOC_MATRIX_VIEW" integer="7" desc="" />
+            <Value name="SHADER_LOC_MATRIX_PROJECTION" integer="8" desc="" />
+            <Value name="SHADER_LOC_MATRIX_MODEL" integer="9" desc="" />
+            <Value name="SHADER_LOC_MATRIX_NORMAL" integer="10" desc="" />
+            <Value name="SHADER_LOC_VECTOR_VIEW" integer="11" desc="" />
+            <Value name="SHADER_LOC_COLOR_DIFFUSE" integer="12" desc="" />
+            <Value name="SHADER_LOC_COLOR_SPECULAR" integer="13" desc="" />
+            <Value name="SHADER_LOC_COLOR_AMBIENT" integer="14" desc="" />
+            <Value name="SHADER_LOC_MAP_ALBEDO" integer="15" desc="" />
+            <Value name="SHADER_LOC_MAP_METALNESS" integer="16" desc="" />
+            <Value name="SHADER_LOC_MAP_NORMAL" integer="17" desc="" />
+            <Value name="SHADER_LOC_MAP_ROUGHNESS" integer="18" desc="" />
+            <Value name="SHADER_LOC_MAP_OCCLUSION" integer="19" desc="" />
+            <Value name="SHADER_LOC_MAP_EMISSION" integer="20" desc="" />
+            <Value name="SHADER_LOC_MAP_HEIGHT" integer="21" desc="" />
+            <Value name="SHADER_LOC_MAP_CUBEMAP" integer="22" desc="" />
+            <Value name="SHADER_LOC_MAP_IRRADIANCE" integer="23" desc="" />
+            <Value name="SHADER_LOC_MAP_PREFILTER" integer="24" desc="" />
+            <Value name="SHADER_LOC_MAP_BRDF" integer="25" desc="" />
+        </Enum>
+        <Enum name="ShaderUniformDataType" valueCount="9" desc="">
+            <Value name="SHADER_UNIFORM_FLOAT" integer="0" desc="" />
+            <Value name="SHADER_UNIFORM_VEC2" integer="1" desc="" />
+            <Value name="SHADER_UNIFORM_VEC3" integer="2" desc="" />
+            <Value name="SHADER_UNIFORM_VEC4" integer="3" desc="" />
+            <Value name="SHADER_UNIFORM_INT" integer="4" desc="" />
+            <Value name="SHADER_UNIFORM_IVEC2" integer="5" desc="" />
+            <Value name="SHADER_UNIFORM_IVEC3" integer="6" desc="" />
+            <Value name="SHADER_UNIFORM_IVEC4" integer="7" desc="" />
+            <Value name="SHADER_UNIFORM_SAMPLER2D" integer="8" desc="" />
+        </Enum>
+        <Enum name="ShaderAttributeDataType" valueCount="4" desc="">
+            <Value name="SHADER_ATTRIB_FLOAT" integer="0" desc="" />
+            <Value name="SHADER_ATTRIB_VEC2" integer="1" desc="" />
+            <Value name="SHADER_ATTRIB_VEC3" integer="2" desc="" />
+            <Value name="SHADER_ATTRIB_VEC4" integer="3" desc="" />
+        </Enum>
+        <Enum name="PixelFormat" valueCount="21" desc="">
+            <Value name="PIXELFORMAT_UNCOMPRESSED_GRAYSCALE" integer="1" desc="" />
+            <Value name="PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA" integer="2" desc="" />
+            <Value name="PIXELFORMAT_UNCOMPRESSED_R5G6B5" integer="3" desc="" />
+            <Value name="PIXELFORMAT_UNCOMPRESSED_R8G8B8" integer="4" desc="" />
+            <Value name="PIXELFORMAT_UNCOMPRESSED_R5G5B5A1" integer="5" desc="" />
+            <Value name="PIXELFORMAT_UNCOMPRESSED_R4G4B4A4" integer="6" desc="" />
+            <Value name="PIXELFORMAT_UNCOMPRESSED_R8G8B8A8" integer="7" desc="" />
+            <Value name="PIXELFORMAT_UNCOMPRESSED_R32" integer="8" desc="" />
+            <Value name="PIXELFORMAT_UNCOMPRESSED_R32G32B32" integer="9" desc="" />
+            <Value name="PIXELFORMAT_UNCOMPRESSED_R32G32B32A32" integer="10" desc="" />
+            <Value name="PIXELFORMAT_COMPRESSED_DXT1_RGB" integer="11" desc="" />
+            <Value name="PIXELFORMAT_COMPRESSED_DXT1_RGBA" integer="12" desc="" />
+            <Value name="PIXELFORMAT_COMPRESSED_DXT3_RGBA" integer="13" desc="" />
+            <Value name="PIXELFORMAT_COMPRESSED_DXT5_RGBA" integer="14" desc="" />
+            <Value name="PIXELFORMAT_COMPRESSED_ETC1_RGB" integer="15" desc="" />
+            <Value name="PIXELFORMAT_COMPRESSED_ETC2_RGB" integer="16" desc="" />
+            <Value name="PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA" integer="17" desc="" />
+            <Value name="PIXELFORMAT_COMPRESSED_PVRT_RGB" integer="18" desc="" />
+            <Value name="PIXELFORMAT_COMPRESSED_PVRT_RGBA" integer="19" desc="" />
+            <Value name="PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA" integer="20" desc="" />
+            <Value name="PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA" integer="21" desc="" />
+        </Enum>
+        <Enum name="TextureFilter" valueCount="6" desc="">
+            <Value name="TEXTURE_FILTER_POINT" integer="0" desc="" />
+            <Value name="TEXTURE_FILTER_BILINEAR" integer="1" desc="" />
+            <Value name="TEXTURE_FILTER_TRILINEAR" integer="2" desc="" />
+            <Value name="TEXTURE_FILTER_ANISOTROPIC_4X" integer="3" desc="" />
+            <Value name="TEXTURE_FILTER_ANISOTROPIC_8X" integer="4" desc="" />
+            <Value name="TEXTURE_FILTER_ANISOTROPIC_16X" integer="5" desc="" />
+        </Enum>
+        <Enum name="TextureWrap" valueCount="4" desc="">
+            <Value name="TEXTURE_WRAP_REPEAT" integer="0" desc="" />
+            <Value name="TEXTURE_WRAP_CLAMP" integer="1" desc="" />
+            <Value name="TEXTURE_WRAP_MIRROR_REPEAT" integer="2" desc="" />
+            <Value name="TEXTURE_WRAP_MIRROR_CLAMP" integer="3" desc="" />
+        </Enum>
+        <Enum name="CubemapLayout" valueCount="6" desc="">
+            <Value name="CUBEMAP_LAYOUT_AUTO_DETECT" integer="0" desc="" />
+            <Value name="CUBEMAP_LAYOUT_LINE_VERTICAL" integer="1" desc="" />
+            <Value name="CUBEMAP_LAYOUT_LINE_HORIZONTAL" integer="2" desc="" />
+            <Value name="CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR" integer="3" desc="" />
+            <Value name="CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE" integer="4" desc="" />
+            <Value name="CUBEMAP_LAYOUT_PANORAMA" integer="5" desc="" />
+        </Enum>
+        <Enum name="FontType" valueCount="3" desc="">
+            <Value name="FONT_DEFAULT" integer="0" desc="" />
+            <Value name="FONT_BITMAP" integer="1" desc="" />
+            <Value name="FONT_SDF" integer="2" desc="" />
+        </Enum>
+        <Enum name="BlendMode" valueCount="6" desc="">
+            <Value name="BLEND_ALPHA" integer="0" desc="" />
+            <Value name="BLEND_ADDITIVE" integer="1" desc="" />
+            <Value name="BLEND_MULTIPLIED" integer="2" desc="" />
+            <Value name="BLEND_ADD_COLORS" integer="3" desc="" />
+            <Value name="BLEND_SUBTRACT_COLORS" integer="4" desc="" />
+            <Value name="BLEND_CUSTOM" integer="5" desc="" />
+        </Enum>
+        <Enum name="Gesture" valueCount="11" desc="">
+            <Value name="GESTURE_NONE" integer="0" desc="" />
+            <Value name="GESTURE_TAP" integer="1" desc="" />
+            <Value name="GESTURE_DOUBLETAP" integer="2" desc="" />
+            <Value name="GESTURE_HOLD" integer="4" desc="" />
+            <Value name="GESTURE_DRAG" integer="8" desc="" />
+            <Value name="GESTURE_SWIPE_RIGHT" integer="16" desc="" />
+            <Value name="GESTURE_SWIPE_LEFT" integer="32" desc="" />
+            <Value name="GESTURE_SWIPE_UP" integer="64" desc="" />
+            <Value name="GESTURE_SWIPE_DOWN" integer="128" desc="" />
+            <Value name="GESTURE_PINCH_IN" integer="256" desc="" />
+            <Value name="GESTURE_PINCH_OUT" integer="512" desc="" />
+        </Enum>
+        <Enum name="CameraMode" valueCount="5" desc="">
+            <Value name="CAMERA_CUSTOM" integer="0" desc="" />
+            <Value name="CAMERA_FREE" integer="1" desc="" />
+            <Value name="CAMERA_ORBITAL" integer="2" desc="" />
+            <Value name="CAMERA_FIRST_PERSON" integer="3" desc="" />
+            <Value name="CAMERA_THIRD_PERSON" integer="4" desc="" />
+        </Enum>
+        <Enum name="CameraProjection" valueCount="2" desc="">
+            <Value name="CAMERA_PERSPECTIVE" integer="0" desc="" />
+            <Value name="CAMERA_ORTHOGRAPHIC" integer="1" desc="" />
+        </Enum>
+        <Enum name="NPatchLayout" valueCount="3" desc="">
+            <Value name="NPATCH_NINE_PATCH" integer="0" desc="" />
+            <Value name="NPATCH_THREE_PATCH_VERTICAL" integer="1" desc="" />
+            <Value name="NPATCH_THREE_PATCH_HORIZONTAL" integer="2" desc="" />
+        </Enum>
+    </Enums>
+    <Functions count="470">
+        <Function name="InitWindow" retType="void" paramCount="3" desc="Initialize window and OpenGL context">
+            <Param type="int" name="width" desc="" />
+            <Param type="int" name="height" desc="" />
+            <Param type="const char *" name="title" desc="" />
+        </Function>
+        <Function name="WindowShouldClose" retType="bool" paramCount="0" desc="Check if KEY_ESCAPE pressed or Close icon pressed">
+        </Function>
+        <Function name="CloseWindow" retType="void" paramCount="0" desc="Close window and unload OpenGL context">
+        </Function>
+        <Function name="IsWindowReady" retType="bool" paramCount="0" desc="Check if window has been initialized successfully">
+        </Function>
+        <Function name="IsWindowFullscreen" retType="bool" paramCount="0" desc="Check if window is currently fullscreen">
+        </Function>
+        <Function name="IsWindowHidden" retType="bool" paramCount="0" desc="Check if window is currently hidden (only PLATFORM_DESKTOP)">
+        </Function>
+        <Function name="IsWindowMinimized" retType="bool" paramCount="0" desc="Check if window is currently minimized (only PLATFORM_DESKTOP)">
+        </Function>
+        <Function name="IsWindowMaximized" retType="bool" paramCount="0" desc="Check if window is currently maximized (only PLATFORM_DESKTOP)">
+        </Function>
+        <Function name="IsWindowFocused" retType="bool" paramCount="0" desc="Check if window is currently focused (only PLATFORM_DESKTOP)">
+        </Function>
+        <Function name="IsWindowResized" retType="bool" paramCount="0" desc="Check if window has been resized last frame">
+        </Function>
+        <Function name="IsWindowState" retType="bool" paramCount="1" desc="Check if one specific window flag is enabled">
+            <Param type="unsigned int" name="flag" desc="" />
+        </Function>
+        <Function name="SetWindowState" retType="void" paramCount="1" desc="Set window configuration state using flags">
+            <Param type="unsigned int" name="flags" desc="" />
+        </Function>
+        <Function name="ClearWindowState" retType="void" paramCount="1" desc="Clear window configuration state flags">
+            <Param type="unsigned int" name="flags" desc="" />
+        </Function>
+        <Function name="ToggleFullscreen" retType="void" paramCount="0" desc="Toggle window state: fullscreen/windowed (only PLATFORM_DESKTOP)">
+        </Function>
+        <Function name="MaximizeWindow" retType="void" paramCount="0" desc="Set window state: maximized, if resizable (only PLATFORM_DESKTOP)">
+        </Function>
+        <Function name="MinimizeWindow" retType="void" paramCount="0" desc="Set window state: minimized, if resizable (only PLATFORM_DESKTOP)">
+        </Function>
+        <Function name="RestoreWindow" retType="void" paramCount="0" desc="Set window state: not minimized/maximized (only PLATFORM_DESKTOP)">
+        </Function>
+        <Function name="SetWindowIcon" retType="void" paramCount="1" desc="Set icon for window (only PLATFORM_DESKTOP)">
+            <Param type="Image" name="image" desc="" />
+        </Function>
+        <Function name="SetWindowTitle" retType="void" paramCount="1" desc="Set title for window (only PLATFORM_DESKTOP)">
+            <Param type="const char *" name="title" desc="" />
+        </Function>
+        <Function name="SetWindowPosition" retType="void" paramCount="2" desc="Set window position on screen (only PLATFORM_DESKTOP)">
+            <Param type="int" name="x" desc="" />
+            <Param type="int" name="y" desc="" />
+        </Function>
+        <Function name="SetWindowMonitor" retType="void" paramCount="1" desc="Set monitor for the current window (fullscreen mode)">
+            <Param type="int" name="monitor" desc="" />
+        </Function>
+        <Function name="SetWindowMinSize" retType="void" paramCount="2" desc="Set window minimum dimensions (for FLAG_WINDOW_RESIZABLE)">
+            <Param type="int" name="width" desc="" />
+            <Param type="int" name="height" desc="" />
+        </Function>
+        <Function name="SetWindowSize" retType="void" paramCount="2" desc="Set window dimensions">
+            <Param type="int" name="width" desc="" />
+            <Param type="int" name="height" desc="" />
+        </Function>
+        <Function name="GetWindowHandle" retType="void *" paramCount="0" desc="Get native window handle">
+        </Function>
+        <Function name="GetScreenWidth" retType="int" paramCount="0" desc="Get current screen width">
+        </Function>
+        <Function name="GetScreenHeight" retType="int" paramCount="0" desc="Get current screen height">
+        </Function>
+        <Function name="GetMonitorCount" retType="int" paramCount="0" desc="Get number of connected monitors">
+        </Function>
+        <Function name="GetCurrentMonitor" retType="int" paramCount="0" desc="Get current connected monitor">
+        </Function>
+        <Function name="GetMonitorPosition" retType="Vector2" paramCount="1" desc="Get specified monitor position">
+            <Param type="int" name="monitor" desc="" />
+        </Function>
+        <Function name="GetMonitorWidth" retType="int" paramCount="1" desc="Get specified monitor width (max available by monitor)">
+            <Param type="int" name="monitor" desc="" />
+        </Function>
+        <Function name="GetMonitorHeight" retType="int" paramCount="1" desc="Get specified monitor height (max available by monitor)">
+            <Param type="int" name="monitor" desc="" />
+        </Function>
+        <Function name="GetMonitorPhysicalWidth" retType="int" paramCount="1" desc="Get specified monitor physical width in millimetres">
+            <Param type="int" name="monitor" desc="" />
+        </Function>
+        <Function name="GetMonitorPhysicalHeight" retType="int" paramCount="1" desc="Get specified monitor physical height in millimetres">
+            <Param type="int" name="monitor" desc="" />
+        </Function>
+        <Function name="GetMonitorRefreshRate" retType="int" paramCount="1" desc="Get specified monitor refresh rate">
+            <Param type="int" name="monitor" desc="" />
+        </Function>
+        <Function name="GetWindowPosition" retType="Vector2" paramCount="0" desc="Get window position XY on monitor">
+        </Function>
+        <Function name="GetWindowScaleDPI" retType="Vector2" paramCount="0" desc="Get window scale DPI factor">
+        </Function>
+        <Function name="GetMonitorName" retType="const char *" paramCount="1" desc="Get the human-readable, UTF-8 encoded name of the primary monitor">
+            <Param type="int" name="monitor" desc="" />
+        </Function>
+        <Function name="SetClipboardText" retType="void" paramCount="1" desc="Set clipboard text content">
+            <Param type="const char *" name="text" desc="" />
+        </Function>
+        <Function name="GetClipboardText" retType="const char *" paramCount="0" desc="Get clipboard text content">
+        </Function>
+        <Function name="ShowCursor" retType="void" paramCount="0" desc="Shows cursor">
+        </Function>
+        <Function name="HideCursor" retType="void" paramCount="0" desc="Hides cursor">
+        </Function>
+        <Function name="IsCursorHidden" retType="bool" paramCount="0" desc="Check if cursor is not visible">
+        </Function>
+        <Function name="EnableCursor" retType="void" paramCount="0" desc="Enables cursor (unlock cursor)">
+        </Function>
+        <Function name="DisableCursor" retType="void" paramCount="0" desc="Disables cursor (lock cursor)">
+        </Function>
+        <Function name="IsCursorOnScreen" retType="bool" paramCount="0" desc="Check if cursor is on the screen">
+        </Function>
+        <Function name="ClearBackground" retType="void" paramCount="1" desc="Set background color (framebuffer clear color)">
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="BeginDrawing" retType="void" paramCount="0" desc="Setup canvas (framebuffer) to start drawing">
+        </Function>
+        <Function name="EndDrawing" retType="void" paramCount="0" desc="End canvas drawing and swap buffers (double buffering)">
+        </Function>
+        <Function name="BeginMode2D" retType="void" paramCount="1" desc="Begin 2D mode with custom camera (2D)">
+            <Param type="Camera2D" name="camera" desc="" />
+        </Function>
+        <Function name="EndMode2D" retType="void" paramCount="0" desc="Ends 2D mode with custom camera">
+        </Function>
+        <Function name="BeginMode3D" retType="void" paramCount="1" desc="Begin 3D mode with custom camera (3D)">
+            <Param type="Camera3D" name="camera" desc="" />
+        </Function>
+        <Function name="EndMode3D" retType="void" paramCount="0" desc="Ends 3D mode and returns to default 2D orthographic mode">
+        </Function>
+        <Function name="BeginTextureMode" retType="void" paramCount="1" desc="Begin drawing to render texture">
+            <Param type="RenderTexture2D" name="target" desc="" />
+        </Function>
+        <Function name="EndTextureMode" retType="void" paramCount="0" desc="Ends drawing to render texture">
+        </Function>
+        <Function name="BeginShaderMode" retType="void" paramCount="1" desc="Begin custom shader drawing">
+            <Param type="Shader" name="shader" desc="" />
+        </Function>
+        <Function name="EndShaderMode" retType="void" paramCount="0" desc="End custom shader drawing (use default shader)">
+        </Function>
+        <Function name="BeginBlendMode" retType="void" paramCount="1" desc="Begin blending mode (alpha, additive, multiplied, subtract, custom)">
+            <Param type="int" name="mode" desc="" />
+        </Function>
+        <Function name="EndBlendMode" retType="void" paramCount="0" desc="End blending mode (reset to default: alpha blending)">
+        </Function>
+        <Function name="BeginScissorMode" retType="void" paramCount="4" desc="Begin scissor mode (define screen area for following drawing)">
+            <Param type="int" name="x" desc="" />
+            <Param type="int" name="y" desc="" />
+            <Param type="int" name="width" desc="" />
+            <Param type="int" name="height" desc="" />
+        </Function>
+        <Function name="EndScissorMode" retType="void" paramCount="0" desc="End scissor mode">
+        </Function>
+        <Function name="BeginVrStereoMode" retType="void" paramCount="1" desc="Begin stereo rendering (requires VR simulator)">
+            <Param type="VrStereoConfig" name="config" desc="" />
+        </Function>
+        <Function name="EndVrStereoMode" retType="void" paramCount="0" desc="End stereo rendering (requires VR simulator)">
+        </Function>
+        <Function name="LoadVrStereoConfig" retType="VrStereoConfig" paramCount="1" desc="Load VR stereo config for VR simulator device parameters">
+            <Param type="VrDeviceInfo" name="device" desc="" />
+        </Function>
+        <Function name="UnloadVrStereoConfig" retType="void" paramCount="1" desc="Unload VR stereo config">
+            <Param type="VrStereoConfig" name="config" desc="" />
+        </Function>
+        <Function name="LoadShader" retType="Shader" paramCount="2" desc="Load shader from files and bind default locations">
+            <Param type="const char *" name="vsFileName" desc="" />
+            <Param type="const char *" name="fsFileName" desc="" />
+        </Function>
+        <Function name="LoadShaderFromMemory" retType="Shader" paramCount="2" desc="Load shader from code strings and bind default locations">
+            <Param type="const char *" name="vsCode" desc="" />
+            <Param type="const char *" name="fsCode" desc="" />
+        </Function>
+        <Function name="GetShaderLocation" retType="int" paramCount="2" desc="Get shader uniform location">
+            <Param type="Shader" name="shader" desc="" />
+            <Param type="const char *" name="uniformName" desc="" />
+        </Function>
+        <Function name="GetShaderLocationAttrib" retType="int" paramCount="2" desc="Get shader attribute location">
+            <Param type="Shader" name="shader" desc="" />
+            <Param type="const char *" name="attribName" desc="" />
+        </Function>
+        <Function name="SetShaderValue" retType="void" paramCount="4" desc="Set shader uniform value">
+            <Param type="Shader" name="shader" desc="" />
+            <Param type="int" name="locIndex" desc="" />
+            <Param type="const void *" name="value" desc="" />
+            <Param type="int" name="uniformType" desc="" />
+        </Function>
+        <Function name="SetShaderValueV" retType="void" paramCount="5" desc="Set shader uniform value vector">
+            <Param type="Shader" name="shader" desc="" />
+            <Param type="int" name="locIndex" desc="" />
+            <Param type="const void *" name="value" desc="" />
+            <Param type="int" name="uniformType" desc="" />
+            <Param type="int" name="count" desc="" />
+        </Function>
+        <Function name="SetShaderValueMatrix" retType="void" paramCount="3" desc="Set shader uniform value (matrix 4x4)">
+            <Param type="Shader" name="shader" desc="" />
+            <Param type="int" name="locIndex" desc="" />
+            <Param type="Matrix" name="mat" desc="" />
+        </Function>
+        <Function name="SetShaderValueTexture" retType="void" paramCount="3" desc="Set shader uniform value for texture (sampler2d)">
+            <Param type="Shader" name="shader" desc="" />
+            <Param type="int" name="locIndex" desc="" />
+            <Param type="Texture2D" name="texture" desc="" />
+        </Function>
+        <Function name="UnloadShader" retType="void" paramCount="1" desc="Unload shader from GPU memory (VRAM)">
+            <Param type="Shader" name="shader" desc="" />
+        </Function>
+        <Function name="GetMouseRay" retType="Ray" paramCount="2" desc="Get a ray trace from mouse position">
+            <Param type="Vector2" name="mousePosition" desc="" />
+            <Param type="Camera" name="camera" desc="" />
+        </Function>
+        <Function name="GetCameraMatrix" retType="Matrix" paramCount="1" desc="Get camera transform matrix (view matrix)">
+            <Param type="Camera" name="camera" desc="" />
+        </Function>
+        <Function name="GetCameraMatrix2D" retType="Matrix" paramCount="1" desc="Get camera 2d transform matrix">
+            <Param type="Camera2D" name="camera" desc="" />
+        </Function>
+        <Function name="GetWorldToScreen" retType="Vector2" paramCount="2" desc="Get the screen space position for a 3d world space position">
+            <Param type="Vector3" name="position" desc="" />
+            <Param type="Camera" name="camera" desc="" />
+        </Function>
+        <Function name="GetWorldToScreenEx" retType="Vector2" paramCount="4" desc="Get size position for a 3d world space position">
+            <Param type="Vector3" name="position" desc="" />
+            <Param type="Camera" name="camera" desc="" />
+            <Param type="int" name="width" desc="" />
+            <Param type="int" name="height" desc="" />
+        </Function>
+        <Function name="GetWorldToScreen2D" retType="Vector2" paramCount="2" desc="Get the screen space position for a 2d camera world space position">
+            <Param type="Vector2" name="position" desc="" />
+            <Param type="Camera2D" name="camera" desc="" />
+        </Function>
+        <Function name="GetScreenToWorld2D" retType="Vector2" paramCount="2" desc="Get the world space position for a 2d camera screen space position">
+            <Param type="Vector2" name="position" desc="" />
+            <Param type="Camera2D" name="camera" desc="" />
+        </Function>
+        <Function name="SetTargetFPS" retType="void" paramCount="1" desc="Set target FPS (maximum)">
+            <Param type="int" name="fps" desc="" />
+        </Function>
+        <Function name="GetFPS" retType="int" paramCount="0" desc="Get current FPS">
+        </Function>
+        <Function name="GetFrameTime" retType="float" paramCount="0" desc="Get time in seconds for last frame drawn (delta time)">
+        </Function>
+        <Function name="GetTime" retType="double" paramCount="0" desc="Get elapsed time in seconds since InitWindow()">
+        </Function>
+        <Function name="GetRandomValue" retType="int" paramCount="2" desc="Get a random value between min and max (both included)">
+            <Param type="int" name="min" desc="" />
+            <Param type="int" name="max" desc="" />
+        </Function>
+        <Function name="TakeScreenshot" retType="void" paramCount="1" desc="Takes a screenshot of current screen (filename extension defines format)">
+            <Param type="const char *" name="fileName" desc="" />
+        </Function>
+        <Function name="SetConfigFlags" retType="void" paramCount="1" desc="Setup init configuration flags (view FLAGS)">
+            <Param type="unsigned int" name="flags" desc="" />
+        </Function>
+        <Function name="TraceLog" retType="void" paramCount="3" desc="Show trace log messages (LOG_DEBUG, LOG_INFO, LOG_WARNING, LOG_ERROR...)">
+            <Param type="int" name="logLevel" desc="" />
+            <Param type="const char *" name="text" desc="" />
+            <Param type="" name="" desc="" />
+        </Function>
+        <Function name="SetTraceLogLevel" retType="void" paramCount="1" desc="Set the current threshold (minimum) log level">
+            <Param type="int" name="logLevel" desc="" />
+        </Function>
+        <Function name="MemAlloc" retType="void *" paramCount="1" desc="Internal memory allocator">
+            <Param type="int" name="size" desc="" />
+        </Function>
+        <Function name="MemRealloc" retType="void *" paramCount="2" desc="Internal memory reallocator">
+            <Param type="void *" name="ptr" desc="" />
+            <Param type="int" name="size" desc="" />
+        </Function>
+        <Function name="MemFree" retType="void" paramCount="1" desc="Internal memory free">
+            <Param type="void *" name="ptr" desc="" />
+        </Function>
+        <Function name="SetTraceLogCallback" retType="void" paramCount="1" desc="Set custom trace log">
+            <Param type="TraceLogCallback" name="callback" desc="" />
+        </Function>
+        <Function name="SetLoadFileDataCallback" retType="void" paramCount="1" desc="Set custom file binary data loader">
+            <Param type="LoadFileDataCallback" name="callback" desc="" />
+        </Function>
+        <Function name="SetSaveFileDataCallback" retType="void" paramCount="1" desc="Set custom file binary data saver">
+            <Param type="SaveFileDataCallback" name="callback" desc="" />
+        </Function>
+        <Function name="SetLoadFileTextCallback" retType="void" paramCount="1" desc="Set custom file text data loader">
+            <Param type="LoadFileTextCallback" name="callback" desc="" />
+        </Function>
+        <Function name="SetSaveFileTextCallback" retType="void" paramCount="1" desc="Set custom file text data saver">
+            <Param type="SaveFileTextCallback" name="callback" desc="" />
+        </Function>
+        <Function name="LoadFileData" retType="unsigned char *" paramCount="2" desc="Load file data as byte array (read)">
+            <Param type="const char *" name="fileName" desc="" />
+            <Param type="unsigned int *" name="bytesRead" desc="" />
+        </Function>
+        <Function name="UnloadFileData" retType="void" paramCount="1" desc="Unload file data allocated by LoadFileData()">
+            <Param type="unsigned char *" name="data" desc="" />
+        </Function>
+        <Function name="SaveFileData" retType="bool" paramCount="3" desc="Save data to file from byte array (write), returns true on success">
+            <Param type="const char *" name="fileName" desc="" />
+            <Param type="void *" name="data" desc="" />
+            <Param type="unsigned int" name="bytesToWrite" desc="" />
+        </Function>
+        <Function name="LoadFileText" retType="char *" paramCount="1" desc="Load text data from file (read), returns a '\0' terminated string">
+            <Param type="const char *" name="fileName" desc="" />
+        </Function>
+        <Function name="UnloadFileText" retType="void" paramCount="1" desc="Unload file text data allocated by LoadFileText()">
+            <Param type="char *" name="text" desc="" />
+        </Function>
+        <Function name="SaveFileText" retType="bool" paramCount="2" desc="Save text data to file (write), string must be '\0' terminated, returns true on success">
+            <Param type="const char *" name="fileName" desc="" />
+            <Param type="char *" name="text" desc="" />
+        </Function>
+        <Function name="FileExists" retType="bool" paramCount="1" desc="Check if file exists">
+            <Param type="const char *" name="fileName" desc="" />
+        </Function>
+        <Function name="DirectoryExists" retType="bool" paramCount="1" desc="Check if a directory path exists">
+            <Param type="const char *" name="dirPath" desc="" />
+        </Function>
+        <Function name="IsFileExtension" retType="bool" paramCount="2" desc="Check file extension (including point: .png, .wav)">
+            <Param type="const char *" name="fileName" desc="" />
+            <Param type="const char *" name="ext" desc="" />
+        </Function>
+        <Function name="GetFileExtension" retType="const char *" paramCount="1" desc="Get pointer to extension for a filename string (includes dot: '.png')">
+            <Param type="const char *" name="fileName" desc="" />
+        </Function>
+        <Function name="GetFileName" retType="const char *" paramCount="1" desc="Get pointer to filename for a path string">
+            <Param type="const char *" name="filePath" desc="" />
+        </Function>
+        <Function name="GetFileNameWithoutExt" retType="const char *" paramCount="1" desc="Get filename string without extension (uses static string)">
+            <Param type="const char *" name="filePath" desc="" />
+        </Function>
+        <Function name="GetDirectoryPath" retType="const char *" paramCount="1" desc="Get full path for a given fileName with path (uses static string)">
+            <Param type="const char *" name="filePath" desc="" />
+        </Function>
+        <Function name="GetPrevDirectoryPath" retType="const char *" paramCount="1" desc="Get previous directory path for a given path (uses static string)">
+            <Param type="const char *" name="dirPath" desc="" />
+        </Function>
+        <Function name="GetWorkingDirectory" retType="const char *" paramCount="0" desc="Get current working directory (uses static string)">
+        </Function>
+        <Function name="GetDirectoryFiles" retType="char **" paramCount="2" desc="Get filenames in a directory path (memory should be freed)">
+            <Param type="const char *" name="dirPath" desc="" />
+            <Param type="int *" name="count" desc="" />
+        </Function>
+        <Function name="ClearDirectoryFiles" retType="void" paramCount="0" desc="Clear directory files paths buffers (free memory)">
+        </Function>
+        <Function name="ChangeDirectory" retType="bool" paramCount="1" desc="Change working directory, return true on success">
+            <Param type="const char *" name="dir" desc="" />
+        </Function>
+        <Function name="IsFileDropped" retType="bool" paramCount="0" desc="Check if a file has been dropped into window">
+        </Function>
+        <Function name="GetDroppedFiles" retType="char **" paramCount="1" desc="Get dropped files names (memory should be freed)">
+            <Param type="int *" name="count" desc="" />
+        </Function>
+        <Function name="ClearDroppedFiles" retType="void" paramCount="0" desc="Clear dropped files paths buffer (free memory)">
+        </Function>
+        <Function name="GetFileModTime" retType="long" paramCount="1" desc="Get file modification time (last write time)">
+            <Param type="const char *" name="fileName" desc="" />
+        </Function>
+        <Function name="CompressData" retType="unsigned char *" paramCount="3" desc="Compress data (DEFLATE algorithm)">
+            <Param type="unsigned char *" name="data" desc="" />
+            <Param type="int" name="dataLength" desc="" />
+            <Param type="int *" name="compDataLength" desc="" />
+        </Function>
+        <Function name="DecompressData" retType="unsigned char *" paramCount="3" desc="Decompress data (DEFLATE algorithm)">
+            <Param type="unsigned char *" name="compData" desc="" />
+            <Param type="int" name="compDataLength" desc="" />
+            <Param type="int *" name="dataLength" desc="" />
+        </Function>
+        <Function name="SaveStorageValue" retType="bool" paramCount="2" desc="Save integer value to storage file (to defined position), returns true on success">
+            <Param type="unsigned int" name="position" desc="" />
+            <Param type="int" name="value" desc="" />
+        </Function>
+        <Function name="LoadStorageValue" retType="int" paramCount="1" desc="Load integer value from storage file (from defined position)">
+            <Param type="unsigned int" name="position" desc="" />
+        </Function>
+        <Function name="OpenURL" retType="void" paramCount="1" desc="Open URL with default system browser (if available)">
+            <Param type="const char *" name="url" desc="" />
+        </Function>
+        <Function name="IsKeyPressed" retType="bool" paramCount="1" desc="Check if a key has been pressed once">
+            <Param type="int" name="key" desc="" />
+        </Function>
+        <Function name="IsKeyDown" retType="bool" paramCount="1" desc="Check if a key is being pressed">
+            <Param type="int" name="key" desc="" />
+        </Function>
+        <Function name="IsKeyReleased" retType="bool" paramCount="1" desc="Check if a key has been released once">
+            <Param type="int" name="key" desc="" />
+        </Function>
+        <Function name="IsKeyUp" retType="bool" paramCount="1" desc="Check if a key is NOT being pressed">
+            <Param type="int" name="key" desc="" />
+        </Function>
+        <Function name="SetExitKey" retType="void" paramCount="1" desc="Set a custom key to exit program (default is ESC)">
+            <Param type="int" name="key" desc="" />
+        </Function>
+        <Function name="GetKeyPressed" retType="int" paramCount="0" desc="Get key pressed (keycode), call it multiple times for keys queued">
+        </Function>
+        <Function name="GetCharPressed" retType="int" paramCount="0" desc="Get char pressed (unicode), call it multiple times for chars queued">
+        </Function>
+        <Function name="IsGamepadAvailable" retType="bool" paramCount="1" desc="Check if a gamepad is available">
+            <Param type="int" name="gamepad" desc="" />
+        </Function>
+        <Function name="IsGamepadName" retType="bool" paramCount="2" desc="Check gamepad name (if available)">
+            <Param type="int" name="gamepad" desc="" />
+            <Param type="const char *" name="name" desc="" />
+        </Function>
+        <Function name="GetGamepadName" retType="const char *" paramCount="1" desc="Get gamepad internal name id">
+            <Param type="int" name="gamepad" desc="" />
+        </Function>
+        <Function name="IsGamepadButtonPressed" retType="bool" paramCount="2" desc="Check if a gamepad button has been pressed once">
+            <Param type="int" name="gamepad" desc="" />
+            <Param type="int" name="button" desc="" />
+        </Function>
+        <Function name="IsGamepadButtonDown" retType="bool" paramCount="2" desc="Check if a gamepad button is being pressed">
+            <Param type="int" name="gamepad" desc="" />
+            <Param type="int" name="button" desc="" />
+        </Function>
+        <Function name="IsGamepadButtonReleased" retType="bool" paramCount="2" desc="Check if a gamepad button has been released once">
+            <Param type="int" name="gamepad" desc="" />
+            <Param type="int" name="button" desc="" />
+        </Function>
+        <Function name="IsGamepadButtonUp" retType="bool" paramCount="2" desc="Check if a gamepad button is NOT being pressed">
+            <Param type="int" name="gamepad" desc="" />
+            <Param type="int" name="button" desc="" />
+        </Function>
+        <Function name="GetGamepadButtonPressed" retType="int" paramCount="0" desc="Get the last gamepad button pressed">
+        </Function>
+        <Function name="GetGamepadAxisCount" retType="int" paramCount="1" desc="Get gamepad axis count for a gamepad">
+            <Param type="int" name="gamepad" desc="" />
+        </Function>
+        <Function name="GetGamepadAxisMovement" retType="float" paramCount="2" desc="Get axis movement value for a gamepad axis">
+            <Param type="int" name="gamepad" desc="" />
+            <Param type="int" name="axis" desc="" />
+        </Function>
+        <Function name="SetGamepadMappings" retType="int" paramCount="1" desc="Set internal gamepad mappings (SDL_GameControllerDB)">
+            <Param type="const char *" name="mappings" desc="" />
+        </Function>
+        <Function name="IsMouseButtonPressed" retType="bool" paramCount="1" desc="Check if a mouse button has been pressed once">
+            <Param type="int" name="button" desc="" />
+        </Function>
+        <Function name="IsMouseButtonDown" retType="bool" paramCount="1" desc="Check if a mouse button is being pressed">
+            <Param type="int" name="button" desc="" />
+        </Function>
+        <Function name="IsMouseButtonReleased" retType="bool" paramCount="1" desc="Check if a mouse button has been released once">
+            <Param type="int" name="button" desc="" />
+        </Function>
+        <Function name="IsMouseButtonUp" retType="bool" paramCount="1" desc="Check if a mouse button is NOT being pressed">
+            <Param type="int" name="button" desc="" />
+        </Function>
+        <Function name="GetMouseX" retType="int" paramCount="0" desc="Get mouse position X">
+        </Function>
+        <Function name="GetMouseY" retType="int" paramCount="0" desc="Get mouse position Y">
+        </Function>
+        <Function name="GetMousePosition" retType="Vector2" paramCount="0" desc="Get mouse position XY">
+        </Function>
+        <Function name="SetMousePosition" retType="void" paramCount="2" desc="Set mouse position XY">
+            <Param type="int" name="x" desc="" />
+            <Param type="int" name="y" desc="" />
+        </Function>
+        <Function name="SetMouseOffset" retType="void" paramCount="2" desc="Set mouse offset">
+            <Param type="int" name="offsetX" desc="" />
+            <Param type="int" name="offsetY" desc="" />
+        </Function>
+        <Function name="SetMouseScale" retType="void" paramCount="2" desc="Set mouse scaling">
+            <Param type="float" name="scaleX" desc="" />
+            <Param type="float" name="scaleY" desc="" />
+        </Function>
+        <Function name="GetMouseWheelMove" retType="float" paramCount="0" desc="Get mouse wheel movement Y">
+        </Function>
+        <Function name="SetMouseCursor" retType="void" paramCount="1" desc="Set mouse cursor">
+            <Param type="int" name="cursor" desc="" />
+        </Function>
+        <Function name="GetTouchX" retType="int" paramCount="0" desc="Get touch position X for touch point 0 (relative to screen size)">
+        </Function>
+        <Function name="GetTouchY" retType="int" paramCount="0" desc="Get touch position Y for touch point 0 (relative to screen size)">
+        </Function>
+        <Function name="GetTouchPosition" retType="Vector2" paramCount="1" desc="Get touch position XY for a touch point index (relative to screen size)">
+            <Param type="int" name="index" desc="" />
+        </Function>
+        <Function name="SetGesturesEnabled" retType="void" paramCount="1" desc="Enable a set of gestures using flags">
+            <Param type="unsigned int" name="flags" desc="" />
+        </Function>
+        <Function name="IsGestureDetected" retType="bool" paramCount="1" desc="Check if a gesture have been detected">
+            <Param type="int" name="gesture" desc="" />
+        </Function>
+        <Function name="GetGestureDetected" retType="int" paramCount="0" desc="Get latest detected gesture">
+        </Function>
+        <Function name="GetTouchPointsCount" retType="int" paramCount="0" desc="Get touch points count">
+        </Function>
+        <Function name="GetGestureHoldDuration" retType="float" paramCount="0" desc="Get gesture hold time in milliseconds">
+        </Function>
+        <Function name="GetGestureDragVector" retType="Vector2" paramCount="0" desc="Get gesture drag vector">
+        </Function>
+        <Function name="GetGestureDragAngle" retType="float" paramCount="0" desc="Get gesture drag angle">
+        </Function>
+        <Function name="GetGesturePinchVector" retType="Vector2" paramCount="0" desc="Get gesture pinch delta">
+        </Function>
+        <Function name="GetGesturePinchAngle" retType="float" paramCount="0" desc="Get gesture pinch angle">
+        </Function>
+        <Function name="SetCameraMode" retType="void" paramCount="2" desc="Set camera mode (multiple camera modes available)">
+            <Param type="Camera" name="camera" desc="" />
+            <Param type="int" name="mode" desc="" />
+        </Function>
+        <Function name="UpdateCamera" retType="void" paramCount="1" desc="Update camera position for selected mode">
+            <Param type="Camera *" name="camera" desc="" />
+        </Function>
+        <Function name="SetCameraPanControl" retType="void" paramCount="1" desc="Set camera pan key to combine with mouse movement (free camera)">
+            <Param type="int" name="keyPan" desc="" />
+        </Function>
+        <Function name="SetCameraAltControl" retType="void" paramCount="1" desc="Set camera alt key to combine with mouse movement (free camera)">
+            <Param type="int" name="keyAlt" desc="" />
+        </Function>
+        <Function name="SetCameraSmoothZoomControl" retType="void" paramCount="1" desc="Set camera smooth zoom key to combine with mouse (free camera)">
+            <Param type="int" name="keySmoothZoom" desc="" />
+        </Function>
+        <Function name="SetCameraMoveControls" retType="void" paramCount="6" desc="Set camera move controls (1st person and 3rd person cameras)">
+            <Param type="int" name="keyFront" desc="" />
+            <Param type="int" name="keyBack" desc="" />
+            <Param type="int" name="keyRight" desc="" />
+            <Param type="int" name="keyLeft" desc="" />
+            <Param type="int" name="keyUp" desc="" />
+            <Param type="int" name="keyDown" desc="" />
+        </Function>
+        <Function name="SetShapesTexture" retType="void" paramCount="2" desc="Set texture and rectangle to be used on shapes drawing">
+            <Param type="Texture2D" name="texture" desc="" />
+            <Param type="Rectangle" name="source" desc="" />
+        </Function>
+        <Function name="DrawPixel" retType="void" paramCount="3" desc="Draw a pixel">
+            <Param type="int" name="posX" desc="" />
+            <Param type="int" name="posY" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawPixelV" retType="void" paramCount="2" desc="Draw a pixel (Vector version)">
+            <Param type="Vector2" name="position" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawLine" retType="void" paramCount="5" desc="Draw a line">
+            <Param type="int" name="startPosX" desc="" />
+            <Param type="int" name="startPosY" desc="" />
+            <Param type="int" name="endPosX" desc="" />
+            <Param type="int" name="endPosY" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawLineV" retType="void" paramCount="3" desc="Draw a line (Vector version)">
+            <Param type="Vector2" name="startPos" desc="" />
+            <Param type="Vector2" name="endPos" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawLineEx" retType="void" paramCount="4" desc="Draw a line defining thickness">
+            <Param type="Vector2" name="startPos" desc="" />
+            <Param type="Vector2" name="endPos" desc="" />
+            <Param type="float" name="thick" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawLineBezier" retType="void" paramCount="4" desc="Draw a line using cubic-bezier curves in-out">
+            <Param type="Vector2" name="startPos" desc="" />
+            <Param type="Vector2" name="endPos" desc="" />
+            <Param type="float" name="thick" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawLineBezierQuad" retType="void" paramCount="5" desc="raw line using quadratic bezier curves with a control point">
+            <Param type="Vector2" name="startPos" desc="" />
+            <Param type="Vector2" name="endPos" desc="" />
+            <Param type="Vector2" name="controlPos" desc="" />
+            <Param type="float" name="thick" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawLineStrip" retType="void" paramCount="3" desc="Draw lines sequence">
+            <Param type="Vector2 *" name="points" desc="" />
+            <Param type="int" name="pointsCount" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawCircle" retType="void" paramCount="4" desc="Draw a color-filled circle">
+            <Param type="int" name="centerX" desc="" />
+            <Param type="int" name="centerY" desc="" />
+            <Param type="float" name="radius" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawCircleSector" retType="void" paramCount="6" desc="Draw a piece of a circle">
+            <Param type="Vector2" name="center" desc="" />
+            <Param type="float" name="radius" desc="" />
+            <Param type="float" name="startAngle" desc="" />
+            <Param type="float" name="endAngle" desc="" />
+            <Param type="int" name="segments" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawCircleSectorLines" retType="void" paramCount="6" desc="Draw circle sector outline">
+            <Param type="Vector2" name="center" desc="" />
+            <Param type="float" name="radius" desc="" />
+            <Param type="float" name="startAngle" desc="" />
+            <Param type="float" name="endAngle" desc="" />
+            <Param type="int" name="segments" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawCircleGradient" retType="void" paramCount="5" desc="Draw a gradient-filled circle">
+            <Param type="int" name="centerX" desc="" />
+            <Param type="int" name="centerY" desc="" />
+            <Param type="float" name="radius" desc="" />
+            <Param type="Color" name="color1" desc="" />
+            <Param type="Color" name="color2" desc="" />
+        </Function>
+        <Function name="DrawCircleV" retType="void" paramCount="3" desc="Draw a color-filled circle (Vector version)">
+            <Param type="Vector2" name="center" desc="" />
+            <Param type="float" name="radius" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawCircleLines" retType="void" paramCount="4" desc="Draw circle outline">
+            <Param type="int" name="centerX" desc="" />
+            <Param type="int" name="centerY" desc="" />
+            <Param type="float" name="radius" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawEllipse" retType="void" paramCount="5" desc="Draw ellipse">
+            <Param type="int" name="centerX" desc="" />
+            <Param type="int" name="centerY" desc="" />
+            <Param type="float" name="radiusH" desc="" />
+            <Param type="float" name="radiusV" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawEllipseLines" retType="void" paramCount="5" desc="Draw ellipse outline">
+            <Param type="int" name="centerX" desc="" />
+            <Param type="int" name="centerY" desc="" />
+            <Param type="float" name="radiusH" desc="" />
+            <Param type="float" name="radiusV" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawRing" retType="void" paramCount="7" desc="Draw ring">
+            <Param type="Vector2" name="center" desc="" />
+            <Param type="float" name="innerRadius" desc="" />
+            <Param type="float" name="outerRadius" desc="" />
+            <Param type="float" name="startAngle" desc="" />
+            <Param type="float" name="endAngle" desc="" />
+            <Param type="int" name="segments" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawRingLines" retType="void" paramCount="7" desc="Draw ring outline">
+            <Param type="Vector2" name="center" desc="" />
+            <Param type="float" name="innerRadius" desc="" />
+            <Param type="float" name="outerRadius" desc="" />
+            <Param type="float" name="startAngle" desc="" />
+            <Param type="float" name="endAngle" desc="" />
+            <Param type="int" name="segments" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawRectangle" retType="void" paramCount="5" desc="Draw a color-filled rectangle">
+            <Param type="int" name="posX" desc="" />
+            <Param type="int" name="posY" desc="" />
+            <Param type="int" name="width" desc="" />
+            <Param type="int" name="height" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawRectangleV" retType="void" paramCount="3" desc="Draw a color-filled rectangle (Vector version)">
+            <Param type="Vector2" name="position" desc="" />
+            <Param type="Vector2" name="size" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawRectangleRec" retType="void" paramCount="2" desc="Draw a color-filled rectangle">
+            <Param type="Rectangle" name="rec" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawRectanglePro" retType="void" paramCount="4" desc="Draw a color-filled rectangle with pro parameters">
+            <Param type="Rectangle" name="rec" desc="" />
+            <Param type="Vector2" name="origin" desc="" />
+            <Param type="float" name="rotation" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawRectangleGradientV" retType="void" paramCount="6" desc="Draw a vertical-gradient-filled rectangle">
+            <Param type="int" name="posX" desc="" />
+            <Param type="int" name="posY" desc="" />
+            <Param type="int" name="width" desc="" />
+            <Param type="int" name="height" desc="" />
+            <Param type="Color" name="color1" desc="" />
+            <Param type="Color" name="color2" desc="" />
+        </Function>
+        <Function name="DrawRectangleGradientH" retType="void" paramCount="6" desc="Draw a horizontal-gradient-filled rectangle">
+            <Param type="int" name="posX" desc="" />
+            <Param type="int" name="posY" desc="" />
+            <Param type="int" name="width" desc="" />
+            <Param type="int" name="height" desc="" />
+            <Param type="Color" name="color1" desc="" />
+            <Param type="Color" name="color2" desc="" />
+        </Function>
+        <Function name="DrawRectangleGradientEx" retType="void" paramCount="5" desc="Draw a gradient-filled rectangle with custom vertex colors">
+            <Param type="Rectangle" name="rec" desc="" />
+            <Param type="Color" name="col1" desc="" />
+            <Param type="Color" name="col2" desc="" />
+            <Param type="Color" name="col3" desc="" />
+            <Param type="Color" name="col4" desc="" />
+        </Function>
+        <Function name="DrawRectangleLines" retType="void" paramCount="5" desc="Draw rectangle outline">
+            <Param type="int" name="posX" desc="" />
+            <Param type="int" name="posY" desc="" />
+            <Param type="int" name="width" desc="" />
+            <Param type="int" name="height" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawRectangleLinesEx" retType="void" paramCount="3" desc="Draw rectangle outline with extended parameters">
+            <Param type="Rectangle" name="rec" desc="" />
+            <Param type="float" name="lineThick" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawRectangleRounded" retType="void" paramCount="4" desc="Draw rectangle with rounded edges">
+            <Param type="Rectangle" name="rec" desc="" />
+            <Param type="float" name="roundness" desc="" />
+            <Param type="int" name="segments" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawRectangleRoundedLines" retType="void" paramCount="5" desc="Draw rectangle with rounded edges outline">
+            <Param type="Rectangle" name="rec" desc="" />
+            <Param type="float" name="roundness" desc="" />
+            <Param type="int" name="segments" desc="" />
+            <Param type="float" name="lineThick" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawTriangle" retType="void" paramCount="4" desc="Draw a color-filled triangle (vertex in counter-clockwise order!)">
+            <Param type="Vector2" name="v1" desc="" />
+            <Param type="Vector2" name="v2" desc="" />
+            <Param type="Vector2" name="v3" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawTriangleLines" retType="void" paramCount="4" desc="Draw triangle outline (vertex in counter-clockwise order!)">
+            <Param type="Vector2" name="v1" desc="" />
+            <Param type="Vector2" name="v2" desc="" />
+            <Param type="Vector2" name="v3" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawTriangleFan" retType="void" paramCount="3" desc="Draw a triangle fan defined by points (first vertex is the center)">
+            <Param type="Vector2 *" name="points" desc="" />
+            <Param type="int" name="pointsCount" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawTriangleStrip" retType="void" paramCount="3" desc="Draw a triangle strip defined by points">
+            <Param type="Vector2 *" name="points" desc="" />
+            <Param type="int" name="pointsCount" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawPoly" retType="void" paramCount="5" desc="Draw a regular polygon (Vector version)">
+            <Param type="Vector2" name="center" desc="" />
+            <Param type="int" name="sides" desc="" />
+            <Param type="float" name="radius" desc="" />
+            <Param type="float" name="rotation" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawPolyLines" retType="void" paramCount="5" desc="Draw a polygon outline of n sides">
+            <Param type="Vector2" name="center" desc="" />
+            <Param type="int" name="sides" desc="" />
+            <Param type="float" name="radius" desc="" />
+            <Param type="float" name="rotation" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawPolyLinesEx" retType="void" paramCount="6" desc="Draw a polygon outline of n sides with extended parameters">
+            <Param type="Vector2" name="center" desc="" />
+            <Param type="int" name="sides" desc="" />
+            <Param type="float" name="radius" desc="" />
+            <Param type="float" name="rotation" desc="" />
+            <Param type="float" name="lineThick" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="CheckCollisionRecs" retType="bool" paramCount="2" desc="Check collision between two rectangles">
+            <Param type="Rectangle" name="rec1" desc="" />
+            <Param type="Rectangle" name="rec2" desc="" />
+        </Function>
+        <Function name="CheckCollisionCircles" retType="bool" paramCount="4" desc="Check collision between two circles">
+            <Param type="Vector2" name="center1" desc="" />
+            <Param type="float" name="radius1" desc="" />
+            <Param type="Vector2" name="center2" desc="" />
+            <Param type="float" name="radius2" desc="" />
+        </Function>
+        <Function name="CheckCollisionCircleRec" retType="bool" paramCount="3" desc="Check collision between circle and rectangle">
+            <Param type="Vector2" name="center" desc="" />
+            <Param type="float" name="radius" desc="" />
+            <Param type="Rectangle" name="rec" desc="" />
+        </Function>
+        <Function name="CheckCollisionPointRec" retType="bool" paramCount="2" desc="Check if point is inside rectangle">
+            <Param type="Vector2" name="point" desc="" />
+            <Param type="Rectangle" name="rec" desc="" />
+        </Function>
+        <Function name="CheckCollisionPointCircle" retType="bool" paramCount="3" desc="Check if point is inside circle">
+            <Param type="Vector2" name="point" desc="" />
+            <Param type="Vector2" name="center" desc="" />
+            <Param type="float" name="radius" desc="" />
+        </Function>
+        <Function name="CheckCollisionPointTriangle" retType="bool" paramCount="4" desc="Check if point is inside a triangle">
+            <Param type="Vector2" name="point" desc="" />
+            <Param type="Vector2" name="p1" desc="" />
+            <Param type="Vector2" name="p2" desc="" />
+            <Param type="Vector2" name="p3" desc="" />
+        </Function>
+        <Function name="CheckCollisionLines" retType="bool" paramCount="5" desc="Check the collision between two lines defined by two points each, returns collision point by reference">
+            <Param type="Vector2" name="startPos1" desc="" />
+            <Param type="Vector2" name="endPos1" desc="" />
+            <Param type="Vector2" name="startPos2" desc="" />
+            <Param type="Vector2" name="endPos2" desc="" />
+            <Param type="Vector2 *" name="collisionPoint" desc="" />
+        </Function>
+        <Function name="GetCollisionRec" retType="Rectangle" paramCount="2" desc="Get collision rectangle for two rectangles collision">
+            <Param type="Rectangle" name="rec1" desc="" />
+            <Param type="Rectangle" name="rec2" desc="" />
+        </Function>
+        <Function name="LoadImage" retType="Image" paramCount="1" desc="Load image from file into CPU memory (RAM)">
+            <Param type="const char *" name="fileName" desc="" />
+        </Function>
+        <Function name="LoadImageRaw" retType="Image" paramCount="5" desc="Load image from RAW file data">
+            <Param type="const char *" name="fileName" desc="" />
+            <Param type="int" name="width" desc="" />
+            <Param type="int" name="height" desc="" />
+            <Param type="int" name="format" desc="" />
+            <Param type="int" name="headerSize" desc="" />
+        </Function>
+        <Function name="LoadImageAnim" retType="Image" paramCount="2" desc="Load image sequence from file (frames appended to image.data)">
+            <Param type="const char *" name="fileName" desc="" />
+            <Param type="int *" name="frames" desc="" />
+        </Function>
+        <Function name="LoadImageFromMemory" retType="Image" paramCount="3" desc="Load image from memory buffer, fileType refers to extension: i.e. '.png'">
+            <Param type="const char *" name="fileType" desc="" />
+            <Param type="const unsigned char *" name="fileData" desc="" />
+            <Param type="int" name="dataSize" desc="" />
+        </Function>
+        <Function name="UnloadImage" retType="void" paramCount="1" desc="Unload image from CPU memory (RAM)">
+            <Param type="Image" name="image" desc="" />
+        </Function>
+        <Function name="ExportImage" retType="bool" paramCount="2" desc="Export image data to file, returns true on success">
+            <Param type="Image" name="image" desc="" />
+            <Param type="const char *" name="fileName" desc="" />
+        </Function>
+        <Function name="ExportImageAsCode" retType="bool" paramCount="2" desc="Export image as code file defining an array of bytes, returns true on success">
+            <Param type="Image" name="image" desc="" />
+            <Param type="const char *" name="fileName" desc="" />
+        </Function>
+        <Function name="GenImageColor" retType="Image" paramCount="3" desc="Generate image: plain color">
+            <Param type="int" name="width" desc="" />
+            <Param type="int" name="height" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="GenImageGradientV" retType="Image" paramCount="4" desc="Generate image: vertical gradient">
+            <Param type="int" name="width" desc="" />
+            <Param type="int" name="height" desc="" />
+            <Param type="Color" name="top" desc="" />
+            <Param type="Color" name="bottom" desc="" />
+        </Function>
+        <Function name="GenImageGradientH" retType="Image" paramCount="4" desc="Generate image: horizontal gradient">
+            <Param type="int" name="width" desc="" />
+            <Param type="int" name="height" desc="" />
+            <Param type="Color" name="left" desc="" />
+            <Param type="Color" name="right" desc="" />
+        </Function>
+        <Function name="GenImageGradientRadial" retType="Image" paramCount="5" desc="Generate image: radial gradient">
+            <Param type="int" name="width" desc="" />
+            <Param type="int" name="height" desc="" />
+            <Param type="float" name="density" desc="" />
+            <Param type="Color" name="inner" desc="" />
+            <Param type="Color" name="outer" desc="" />
+        </Function>
+        <Function name="GenImageChecked" retType="Image" paramCount="6" desc="Generate image: checked">
+            <Param type="int" name="width" desc="" />
+            <Param type="int" name="height" desc="" />
+            <Param type="int" name="checksX" desc="" />
+            <Param type="int" name="checksY" desc="" />
+            <Param type="Color" name="col1" desc="" />
+            <Param type="Color" name="col2" desc="" />
+        </Function>
+        <Function name="GenImageWhiteNoise" retType="Image" paramCount="3" desc="Generate image: white noise">
+            <Param type="int" name="width" desc="" />
+            <Param type="int" name="height" desc="" />
+            <Param type="float" name="factor" desc="" />
+        </Function>
+        <Function name="GenImagePerlinNoise" retType="Image" paramCount="5" desc="Generate image: perlin noise">
+            <Param type="int" name="width" desc="" />
+            <Param type="int" name="height" desc="" />
+            <Param type="int" name="offsetX" desc="" />
+            <Param type="int" name="offsetY" desc="" />
+            <Param type="float" name="scale" desc="" />
+        </Function>
+        <Function name="GenImageCellular" retType="Image" paramCount="3" desc="Generate image: cellular algorithm. Bigger tileSize means bigger cells">
+            <Param type="int" name="width" desc="" />
+            <Param type="int" name="height" desc="" />
+            <Param type="int" name="tileSize" desc="" />
+        </Function>
+        <Function name="ImageCopy" retType="Image" paramCount="1" desc="Create an image duplicate (useful for transformations)">
+            <Param type="Image" name="image" desc="" />
+        </Function>
+        <Function name="ImageFromImage" retType="Image" paramCount="2" desc="Create an image from another image piece">
+            <Param type="Image" name="image" desc="" />
+            <Param type="Rectangle" name="rec" desc="" />
+        </Function>
+        <Function name="ImageText" retType="Image" paramCount="3" desc="Create an image from text (default font)">
+            <Param type="const char *" name="text" desc="" />
+            <Param type="int" name="fontSize" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="ImageTextEx" retType="Image" paramCount="5" desc="Create an image from text (custom sprite font)">
+            <Param type="Font" name="font" desc="" />
+            <Param type="const char *" name="text" desc="" />
+            <Param type="float" name="fontSize" desc="" />
+            <Param type="float" name="spacing" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="ImageFormat" retType="void" paramCount="2" desc="Convert image data to desired format">
+            <Param type="Image *" name="image" desc="" />
+            <Param type="int" name="newFormat" desc="" />
+        </Function>
+        <Function name="ImageToPOT" retType="void" paramCount="2" desc="Convert image to POT (power-of-two)">
+            <Param type="Image *" name="image" desc="" />
+            <Param type="Color" name="fill" desc="" />
+        </Function>
+        <Function name="ImageCrop" retType="void" paramCount="2" desc="Crop an image to a defined rectangle">
+            <Param type="Image *" name="image" desc="" />
+            <Param type="Rectangle" name="crop" desc="" />
+        </Function>
+        <Function name="ImageAlphaCrop" retType="void" paramCount="2" desc="Crop image depending on alpha value">
+            <Param type="Image *" name="image" desc="" />
+            <Param type="float" name="threshold" desc="" />
+        </Function>
+        <Function name="ImageAlphaClear" retType="void" paramCount="3" desc="Clear alpha channel to desired color">
+            <Param type="Image *" name="image" desc="" />
+            <Param type="Color" name="color" desc="" />
+            <Param type="float" name="threshold" desc="" />
+        </Function>
+        <Function name="ImageAlphaMask" retType="void" paramCount="2" desc="Apply alpha mask to image">
+            <Param type="Image *" name="image" desc="" />
+            <Param type="Image" name="alphaMask" desc="" />
+        </Function>
+        <Function name="ImageAlphaPremultiply" retType="void" paramCount="1" desc="Premultiply alpha channel">
+            <Param type="Image *" name="image" desc="" />
+        </Function>
+        <Function name="ImageResize" retType="void" paramCount="3" desc="Resize image (Bicubic scaling algorithm)">
+            <Param type="Image *" name="image" desc="" />
+            <Param type="int" name="newWidth" desc="" />
+            <Param type="int" name="newHeight" desc="" />
+        </Function>
+        <Function name="ImageResizeNN" retType="void" paramCount="3" desc="Resize image (Nearest-Neighbor scaling algorithm)">
+            <Param type="Image *" name="image" desc="" />
+            <Param type="int" name="newWidth" desc="" />
+            <Param type="int" name="newHeight" desc="" />
+        </Function>
+        <Function name="ImageResizeCanvas" retType="void" paramCount="6" desc="Resize canvas and fill with color">
+            <Param type="Image *" name="image" desc="" />
+            <Param type="int" name="newWidth" desc="" />
+            <Param type="int" name="newHeight" desc="" />
+            <Param type="int" name="offsetX" desc="" />
+            <Param type="int" name="offsetY" desc="" />
+            <Param type="Color" name="fill" desc="" />
+        </Function>
+        <Function name="ImageMipmaps" retType="void" paramCount="1" desc="Compute all mipmap levels for a provided image">
+            <Param type="Image *" name="image" desc="" />
+        </Function>
+        <Function name="ImageDither" retType="void" paramCount="5" desc="Dither image data to 16bpp or lower (Floyd-Steinberg dithering)">
+            <Param type="Image *" name="image" desc="" />
+            <Param type="int" name="rBpp" desc="" />
+            <Param type="int" name="gBpp" desc="" />
+            <Param type="int" name="bBpp" desc="" />
+            <Param type="int" name="aBpp" desc="" />
+        </Function>
+        <Function name="ImageFlipVertical" retType="void" paramCount="1" desc="Flip image vertically">
+            <Param type="Image *" name="image" desc="" />
+        </Function>
+        <Function name="ImageFlipHorizontal" retType="void" paramCount="1" desc="Flip image horizontally">
+            <Param type="Image *" name="image" desc="" />
+        </Function>
+        <Function name="ImageRotateCW" retType="void" paramCount="1" desc="Rotate image clockwise 90deg">
+            <Param type="Image *" name="image" desc="" />
+        </Function>
+        <Function name="ImageRotateCCW" retType="void" paramCount="1" desc="Rotate image counter-clockwise 90deg">
+            <Param type="Image *" name="image" desc="" />
+        </Function>
+        <Function name="ImageColorTint" retType="void" paramCount="2" desc="Modify image color: tint">
+            <Param type="Image *" name="image" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="ImageColorInvert" retType="void" paramCount="1" desc="Modify image color: invert">
+            <Param type="Image *" name="image" desc="" />
+        </Function>
+        <Function name="ImageColorGrayscale" retType="void" paramCount="1" desc="Modify image color: grayscale">
+            <Param type="Image *" name="image" desc="" />
+        </Function>
+        <Function name="ImageColorContrast" retType="void" paramCount="2" desc="Modify image color: contrast (-100 to 100)">
+            <Param type="Image *" name="image" desc="" />
+            <Param type="float" name="contrast" desc="" />
+        </Function>
+        <Function name="ImageColorBrightness" retType="void" paramCount="2" desc="Modify image color: brightness (-255 to 255)">
+            <Param type="Image *" name="image" desc="" />
+            <Param type="int" name="brightness" desc="" />
+        </Function>
+        <Function name="ImageColorReplace" retType="void" paramCount="3" desc="Modify image color: replace color">
+            <Param type="Image *" name="image" desc="" />
+            <Param type="Color" name="color" desc="" />
+            <Param type="Color" name="replace" desc="" />
+        </Function>
+        <Function name="LoadImageColors" retType="Color *" paramCount="1" desc="Load color data from image as a Color array (RGBA - 32bit)">
+            <Param type="Image" name="image" desc="" />
+        </Function>
+        <Function name="LoadImagePalette" retType="Color *" paramCount="3" desc="Load colors palette from image as a Color array (RGBA - 32bit)">
+            <Param type="Image" name="image" desc="" />
+            <Param type="int" name="maxPaletteSize" desc="" />
+            <Param type="int *" name="colorsCount" desc="" />
+        </Function>
+        <Function name="UnloadImageColors" retType="void" paramCount="1" desc="Unload color data loaded with LoadImageColors()">
+            <Param type="Color *" name="colors" desc="" />
+        </Function>
+        <Function name="UnloadImagePalette" retType="void" paramCount="1" desc="Unload colors palette loaded with LoadImagePalette()">
+            <Param type="Color *" name="colors" desc="" />
+        </Function>
+        <Function name="GetImageAlphaBorder" retType="Rectangle" paramCount="2" desc="Get image alpha border rectangle">
+            <Param type="Image" name="image" desc="" />
+            <Param type="float" name="threshold" desc="" />
+        </Function>
+        <Function name="ImageClearBackground" retType="void" paramCount="2" desc="Clear image background with given color">
+            <Param type="Image *" name="dst" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="ImageDrawPixel" retType="void" paramCount="4" desc="Draw pixel within an image">
+            <Param type="Image *" name="dst" desc="" />
+            <Param type="int" name="posX" desc="" />
+            <Param type="int" name="posY" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="ImageDrawPixelV" retType="void" paramCount="3" desc="Draw pixel within an image (Vector version)">
+            <Param type="Image *" name="dst" desc="" />
+            <Param type="Vector2" name="position" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="ImageDrawLine" retType="void" paramCount="6" desc="Draw line within an image">
+            <Param type="Image *" name="dst" desc="" />
+            <Param type="int" name="startPosX" desc="" />
+            <Param type="int" name="startPosY" desc="" />
+            <Param type="int" name="endPosX" desc="" />
+            <Param type="int" name="endPosY" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="ImageDrawLineV" retType="void" paramCount="4" desc="Draw line within an image (Vector version)">
+            <Param type="Image *" name="dst" desc="" />
+            <Param type="Vector2" name="start" desc="" />
+            <Param type="Vector2" name="end" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="ImageDrawCircle" retType="void" paramCount="5" desc="Draw circle within an image">
+            <Param type="Image *" name="dst" desc="" />
+            <Param type="int" name="centerX" desc="" />
+            <Param type="int" name="centerY" desc="" />
+            <Param type="int" name="radius" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="ImageDrawCircleV" retType="void" paramCount="4" desc="Draw circle within an image (Vector version)">
+            <Param type="Image *" name="dst" desc="" />
+            <Param type="Vector2" name="center" desc="" />
+            <Param type="int" name="radius" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="ImageDrawRectangle" retType="void" paramCount="6" desc="Draw rectangle within an image">
+            <Param type="Image *" name="dst" desc="" />
+            <Param type="int" name="posX" desc="" />
+            <Param type="int" name="posY" desc="" />
+            <Param type="int" name="width" desc="" />
+            <Param type="int" name="height" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="ImageDrawRectangleV" retType="void" paramCount="4" desc="Draw rectangle within an image (Vector version)">
+            <Param type="Image *" name="dst" desc="" />
+            <Param type="Vector2" name="position" desc="" />
+            <Param type="Vector2" name="size" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="ImageDrawRectangleRec" retType="void" paramCount="3" desc="Draw rectangle within an image">
+            <Param type="Image *" name="dst" desc="" />
+            <Param type="Rectangle" name="rec" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="ImageDrawRectangleLines" retType="void" paramCount="4" desc="Draw rectangle lines within an image">
+            <Param type="Image *" name="dst" desc="" />
+            <Param type="Rectangle" name="rec" desc="" />
+            <Param type="int" name="thick" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="ImageDraw" retType="void" paramCount="5" desc="Draw a source image within a destination image (tint applied to source)">
+            <Param type="Image *" name="dst" desc="" />
+            <Param type="Image" name="src" desc="" />
+            <Param type="Rectangle" name="srcRec" desc="" />
+            <Param type="Rectangle" name="dstRec" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="ImageDrawText" retType="void" paramCount="6" desc="Draw text (using default font) within an image (destination)">
+            <Param type="Image *" name="dst" desc="" />
+            <Param type="const char *" name="text" desc="" />
+            <Param type="int" name="posX" desc="" />
+            <Param type="int" name="posY" desc="" />
+            <Param type="int" name="fontSize" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="ImageDrawTextEx" retType="void" paramCount="7" desc="Draw text (custom sprite font) within an image (destination)">
+            <Param type="Image *" name="dst" desc="" />
+            <Param type="Font" name="font" desc="" />
+            <Param type="const char *" name="text" desc="" />
+            <Param type="Vector2" name="position" desc="" />
+            <Param type="float" name="fontSize" desc="" />
+            <Param type="float" name="spacing" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="LoadTexture" retType="Texture2D" paramCount="1" desc="Load texture from file into GPU memory (VRAM)">
+            <Param type="const char *" name="fileName" desc="" />
+        </Function>
+        <Function name="LoadTextureFromImage" retType="Texture2D" paramCount="1" desc="Load texture from image data">
+            <Param type="Image" name="image" desc="" />
+        </Function>
+        <Function name="LoadTextureCubemap" retType="TextureCubemap" paramCount="2" desc="Load cubemap from image, multiple image cubemap layouts supported">
+            <Param type="Image" name="image" desc="" />
+            <Param type="int" name="layout" desc="" />
+        </Function>
+        <Function name="LoadRenderTexture" retType="RenderTexture2D" paramCount="2" desc="Load texture for rendering (framebuffer)">
+            <Param type="int" name="width" desc="" />
+            <Param type="int" name="height" desc="" />
+        </Function>
+        <Function name="UnloadTexture" retType="void" paramCount="1" desc="Unload texture from GPU memory (VRAM)">
+            <Param type="Texture2D" name="texture" desc="" />
+        </Function>
+        <Function name="UnloadRenderTexture" retType="void" paramCount="1" desc="Unload render texture from GPU memory (VRAM)">
+            <Param type="RenderTexture2D" name="target" desc="" />
+        </Function>
+        <Function name="UpdateTexture" retType="void" paramCount="2" desc="Update GPU texture with new data">
+            <Param type="Texture2D" name="texture" desc="" />
+            <Param type="const void *" name="pixels" desc="" />
+        </Function>
+        <Function name="UpdateTextureRec" retType="void" paramCount="3" desc="Update GPU texture rectangle with new data">
+            <Param type="Texture2D" name="texture" desc="" />
+            <Param type="Rectangle" name="rec" desc="" />
+            <Param type="const void *" name="pixels" desc="" />
+        </Function>
+        <Function name="GetTextureData" retType="Image" paramCount="1" desc="Get pixel data from GPU texture and return an Image">
+            <Param type="Texture2D" name="texture" desc="" />
+        </Function>
+        <Function name="GetScreenData" retType="Image" paramCount="0" desc="Get pixel data from screen buffer and return an Image (screenshot)">
+        </Function>
+        <Function name="GenTextureMipmaps" retType="void" paramCount="1" desc="Generate GPU mipmaps for a texture">
+            <Param type="Texture2D *" name="texture" desc="" />
+        </Function>
+        <Function name="SetTextureFilter" retType="void" paramCount="2" desc="Set texture scaling filter mode">
+            <Param type="Texture2D" name="texture" desc="" />
+            <Param type="int" name="filter" desc="" />
+        </Function>
+        <Function name="SetTextureWrap" retType="void" paramCount="2" desc="Set texture wrapping mode">
+            <Param type="Texture2D" name="texture" desc="" />
+            <Param type="int" name="wrap" desc="" />
+        </Function>
+        <Function name="DrawTexture" retType="void" paramCount="4" desc="Draw a Texture2D">
+            <Param type="Texture2D" name="texture" desc="" />
+            <Param type="int" name="posX" desc="" />
+            <Param type="int" name="posY" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="DrawTextureV" retType="void" paramCount="3" desc="Draw a Texture2D with position defined as Vector2">
+            <Param type="Texture2D" name="texture" desc="" />
+            <Param type="Vector2" name="position" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="DrawTextureEx" retType="void" paramCount="5" desc="Draw a Texture2D with extended parameters">
+            <Param type="Texture2D" name="texture" desc="" />
+            <Param type="Vector2" name="position" desc="" />
+            <Param type="float" name="rotation" desc="" />
+            <Param type="float" name="scale" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="DrawTextureRec" retType="void" paramCount="4" desc="Draw a part of a texture defined by a rectangle">
+            <Param type="Texture2D" name="texture" desc="" />
+            <Param type="Rectangle" name="source" desc="" />
+            <Param type="Vector2" name="position" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="DrawTextureQuad" retType="void" paramCount="5" desc="Draw texture quad with tiling and offset parameters">
+            <Param type="Texture2D" name="texture" desc="" />
+            <Param type="Vector2" name="tiling" desc="" />
+            <Param type="Vector2" name="offset" desc="" />
+            <Param type="Rectangle" name="quad" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="DrawTextureTiled" retType="void" paramCount="7" desc="Draw part of a texture (defined by a rectangle) with rotation and scale tiled into dest.">
+            <Param type="Texture2D" name="texture" desc="" />
+            <Param type="Rectangle" name="source" desc="" />
+            <Param type="Rectangle" name="dest" desc="" />
+            <Param type="Vector2" name="origin" desc="" />
+            <Param type="float" name="rotation" desc="" />
+            <Param type="float" name="scale" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="DrawTexturePro" retType="void" paramCount="6" desc="Draw a part of a texture defined by a rectangle with 'pro' parameters">
+            <Param type="Texture2D" name="texture" desc="" />
+            <Param type="Rectangle" name="source" desc="" />
+            <Param type="Rectangle" name="dest" desc="" />
+            <Param type="Vector2" name="origin" desc="" />
+            <Param type="float" name="rotation" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="DrawTextureNPatch" retType="void" paramCount="6" desc="Draws a texture (or part of it) that stretches or shrinks nicely">
+            <Param type="Texture2D" name="texture" desc="" />
+            <Param type="NPatchInfo" name="nPatchInfo" desc="" />
+            <Param type="Rectangle" name="dest" desc="" />
+            <Param type="Vector2" name="origin" desc="" />
+            <Param type="float" name="rotation" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="DrawTexturePoly" retType="void" paramCount="6" desc="Draw a textured polygon">
+            <Param type="Texture2D" name="texture" desc="" />
+            <Param type="Vector2" name="center" desc="" />
+            <Param type="Vector2 *" name="points" desc="" />
+            <Param type="Vector2 *" name="texcoords" desc="" />
+            <Param type="int" name="pointsCount" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="Fade" retType="Color" paramCount="2" desc="Get color with alpha applied, alpha goes from 0.0f to 1.0f">
+            <Param type="Color" name="color" desc="" />
+            <Param type="float" name="alpha" desc="" />
+        </Function>
+        <Function name="ColorToInt" retType="int" paramCount="1" desc="Get hexadecimal value for a Color">
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="ColorNormalize" retType="Vector4" paramCount="1" desc="Get Color normalized as float [0..1]">
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="ColorFromNormalized" retType="Color" paramCount="1" desc="Get Color from normalized values [0..1]">
+            <Param type="Vector4" name="normalized" desc="" />
+        </Function>
+        <Function name="ColorToHSV" retType="Vector3" paramCount="1" desc="Get HSV values for a Color, hue [0..360], saturation/value [0..1]">
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="ColorFromHSV" retType="Color" paramCount="3" desc="Get a Color from HSV values, hue [0..360], saturation/value [0..1]">
+            <Param type="float" name="hue" desc="" />
+            <Param type="float" name="saturation" desc="" />
+            <Param type="float" name="value" desc="" />
+        </Function>
+        <Function name="ColorAlpha" retType="Color" paramCount="2" desc="Get color with alpha applied, alpha goes from 0.0f to 1.0f">
+            <Param type="Color" name="color" desc="" />
+            <Param type="float" name="alpha" desc="" />
+        </Function>
+        <Function name="ColorAlphaBlend" retType="Color" paramCount="3" desc="Get src alpha-blended into dst color with tint">
+            <Param type="Color" name="dst" desc="" />
+            <Param type="Color" name="src" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="GetColor" retType="Color" paramCount="1" desc="Get Color structure from hexadecimal value">
+            <Param type="int" name="hexValue" desc="" />
+        </Function>
+        <Function name="GetPixelColor" retType="Color" paramCount="2" desc="Get Color from a source pixel pointer of certain format">
+            <Param type="void *" name="srcPtr" desc="" />
+            <Param type="int" name="format" desc="" />
+        </Function>
+        <Function name="SetPixelColor" retType="void" paramCount="3" desc="Set color formatted into destination pixel pointer">
+            <Param type="void *" name="dstPtr" desc="" />
+            <Param type="Color" name="color" desc="" />
+            <Param type="int" name="format" desc="" />
+        </Function>
+        <Function name="GetPixelDataSize" retType="int" paramCount="3" desc="Get pixel data size in bytes for certain format">
+            <Param type="int" name="width" desc="" />
+            <Param type="int" name="height" desc="" />
+            <Param type="int" name="format" desc="" />
+        </Function>
+        <Function name="GetFontDefault" retType="Font" paramCount="0" desc="Get the default Font">
+        </Function>
+        <Function name="LoadFont" retType="Font" paramCount="1" desc="Load font from file into GPU memory (VRAM)">
+            <Param type="const char *" name="fileName" desc="" />
+        </Function>
+        <Function name="LoadFontEx" retType="Font" paramCount="4" desc="Load font from file with extended parameters">
+            <Param type="const char *" name="fileName" desc="" />
+            <Param type="int" name="fontSize" desc="" />
+            <Param type="int *" name="fontChars" desc="" />
+            <Param type="int" name="charsCount" desc="" />
+        </Function>
+        <Function name="LoadFontFromImage" retType="Font" paramCount="3" desc="Load font from Image (XNA style)">
+            <Param type="Image" name="image" desc="" />
+            <Param type="Color" name="key" desc="" />
+            <Param type="int" name="firstChar" desc="" />
+        </Function>
+        <Function name="LoadFontFromMemory" retType="Font" paramCount="6" desc="Load font from memory buffer, fileType refers to extension: i.e. '.ttf'">
+            <Param type="const char *" name="fileType" desc="" />
+            <Param type="const unsigned char *" name="fileData" desc="" />
+            <Param type="int" name="dataSize" desc="" />
+            <Param type="int" name="fontSize" desc="" />
+            <Param type="int *" name="fontChars" desc="" />
+            <Param type="int" name="charsCount" desc="" />
+        </Function>
+        <Function name="LoadFontData" retType="CharInfo *" paramCount="6" desc="Load font data for further use">
+            <Param type="const unsigned char *" name="fileData" desc="" />
+            <Param type="int" name="dataSize" desc="" />
+            <Param type="int" name="fontSize" desc="" />
+            <Param type="int *" name="fontChars" desc="" />
+            <Param type="int" name="charsCount" desc="" />
+            <Param type="int" name="type" desc="" />
+        </Function>
+        <Function name="GenImageFontAtlas" retType="Image" paramCount="6" desc="Generate image font atlas using chars info">
+            <Param type="const CharInfo *" name="chars" desc="" />
+            <Param type="Rectangle **" name="recs" desc="" />
+            <Param type="int" name="charsCount" desc="" />
+            <Param type="int" name="fontSize" desc="" />
+            <Param type="int" name="padding" desc="" />
+            <Param type="int" name="packMethod" desc="" />
+        </Function>
+        <Function name="UnloadFontData" retType="void" paramCount="2" desc="Unload font chars info data (RAM)">
+            <Param type="CharInfo *" name="chars" desc="" />
+            <Param type="int" name="charsCount" desc="" />
+        </Function>
+        <Function name="UnloadFont" retType="void" paramCount="1" desc="Unload Font from GPU memory (VRAM)">
+            <Param type="Font" name="font" desc="" />
+        </Function>
+        <Function name="DrawFPS" retType="void" paramCount="2" desc="Draw current FPS">
+            <Param type="int" name="posX" desc="" />
+            <Param type="int" name="posY" desc="" />
+        </Function>
+        <Function name="DrawText" retType="void" paramCount="5" desc="Draw text (using default font)">
+            <Param type="const char *" name="text" desc="" />
+            <Param type="int" name="posX" desc="" />
+            <Param type="int" name="posY" desc="" />
+            <Param type="int" name="fontSize" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawTextEx" retType="void" paramCount="6" desc="Draw text using font and additional parameters">
+            <Param type="Font" name="font" desc="" />
+            <Param type="const char *" name="text" desc="" />
+            <Param type="Vector2" name="position" desc="" />
+            <Param type="float" name="fontSize" desc="" />
+            <Param type="float" name="spacing" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="DrawTextRec" retType="void" paramCount="7" desc="Draw text using font inside rectangle limits">
+            <Param type="Font" name="font" desc="" />
+            <Param type="const char *" name="text" desc="" />
+            <Param type="Rectangle" name="rec" desc="" />
+            <Param type="float" name="fontSize" desc="" />
+            <Param type="float" name="spacing" desc="" />
+            <Param type="bool" name="wordWrap" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="DrawTextRecEx" retType="void" paramCount="11" desc="Draw text using font inside rectangle limits with support for text selection">
+            <Param type="Font" name="font" desc="" />
+            <Param type="const char *" name="text" desc="" />
+            <Param type="Rectangle" name="rec" desc="" />
+            <Param type="float" name="fontSize" desc="" />
+            <Param type="float" name="spacing" desc="" />
+            <Param type="bool" name="wordWrap" desc="" />
+            <Param type="Color" name="tint" desc="" />
+            <Param type="int" name="selectStart" desc="" />
+            <Param type="int" name="selectLength" desc="" />
+            <Param type="Color" name="selectTint" desc="" />
+            <Param type="Color" name="selectBackTint" desc="" />
+        </Function>
+        <Function name="DrawTextCodepoint" retType="void" paramCount="5" desc="Draw one character (codepoint)">
+            <Param type="Font" name="font" desc="" />
+            <Param type="int" name="codepoint" desc="" />
+            <Param type="Vector2" name="position" desc="" />
+            <Param type="float" name="fontSize" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="MeasureText" retType="int" paramCount="2" desc="Measure string width for default font">
+            <Param type="const char *" name="text" desc="" />
+            <Param type="int" name="fontSize" desc="" />
+        </Function>
+        <Function name="MeasureTextEx" retType="Vector2" paramCount="4" desc="Measure string size for Font">
+            <Param type="Font" name="font" desc="" />
+            <Param type="const char *" name="text" desc="" />
+            <Param type="float" name="fontSize" desc="" />
+            <Param type="float" name="spacing" desc="" />
+        </Function>
+        <Function name="GetGlyphIndex" retType="int" paramCount="2" desc="Get index position for a unicode character on font">
+            <Param type="Font" name="font" desc="" />
+            <Param type="int" name="codepoint" desc="" />
+        </Function>
+        <Function name="TextCopy" retType="int" paramCount="2" desc="Copy one string to another, returns bytes copied">
+            <Param type="char *" name="dst" desc="" />
+            <Param type="const char *" name="src" desc="" />
+        </Function>
+        <Function name="TextIsEqual" retType="bool" paramCount="2" desc="Check if two text string are equal">
+            <Param type="const char *" name="text1" desc="" />
+            <Param type="const char *" name="text2" desc="" />
+        </Function>
+        <Function name="TextLength" retType="unsigned int" paramCount="1" desc="Get text length, checks for '\0' ending">
+            <Param type="const char *" name="text" desc="" />
+        </Function>
+        <Function name="TextFormat" retType="const char *" paramCount="2" desc="Text formatting with variables (sprintf style)">
+            <Param type="const char *" name="text" desc="" />
+            <Param type="" name="" desc="" />
+        </Function>
+        <Function name="TextSubtext" retType="const char *" paramCount="3" desc="Get a piece of a text string">
+            <Param type="const char *" name="text" desc="" />
+            <Param type="int" name="position" desc="" />
+            <Param type="int" name="length" desc="" />
+        </Function>
+        <Function name="TextReplace" retType="char *" paramCount="3" desc="Replace text string (memory must be freed!)">
+            <Param type="char *" name="text" desc="" />
+            <Param type="const char *" name="replace" desc="" />
+            <Param type="const char *" name="by" desc="" />
+        </Function>
+        <Function name="TextInsert" retType="char *" paramCount="3" desc="Insert text in a position (memory must be freed!)">
+            <Param type="const char *" name="text" desc="" />
+            <Param type="const char *" name="insert" desc="" />
+            <Param type="int" name="position" desc="" />
+        </Function>
+        <Function name="TextJoin" retType="const char *" paramCount="3" desc="Join text strings with delimiter">
+            <Param type="const char **" name="textList" desc="" />
+            <Param type="int" name="count" desc="" />
+            <Param type="const char *" name="delimiter" desc="" />
+        </Function>
+        <Function name="TextSplit" retType="const char **" paramCount="3" desc="Split text into multiple strings">
+            <Param type="const char *" name="text" desc="" />
+            <Param type="char" name="delimiter" desc="" />
+            <Param type="int *" name="count" desc="" />
+        </Function>
+        <Function name="TextAppend" retType="void" paramCount="3" desc="Append text at specific position and move cursor!">
+            <Param type="char *" name="text" desc="" />
+            <Param type="const char *" name="append" desc="" />
+            <Param type="int *" name="position" desc="" />
+        </Function>
+        <Function name="TextFindIndex" retType="int" paramCount="2" desc="Find first text occurrence within a string">
+            <Param type="const char *" name="text" desc="" />
+            <Param type="const char *" name="find" desc="" />
+        </Function>
+        <Function name="TextToUpper" retType="const char *" paramCount="1" desc="Get upper case version of provided string">
+            <Param type="const char *" name="text" desc="" />
+        </Function>
+        <Function name="TextToLower" retType="const char *" paramCount="1" desc="Get lower case version of provided string">
+            <Param type="const char *" name="text" desc="" />
+        </Function>
+        <Function name="TextToPascal" retType="const char *" paramCount="1" desc="Get Pascal case notation version of provided string">
+            <Param type="const char *" name="text" desc="" />
+        </Function>
+        <Function name="TextToInteger" retType="int" paramCount="1" desc="Get integer value from text (negative values not supported)">
+            <Param type="const char *" name="text" desc="" />
+        </Function>
+        <Function name="TextToUtf8" retType="char *" paramCount="2" desc="Encode text codepoint into utf8 text (memory must be freed!)">
+            <Param type="int *" name="codepoints" desc="" />
+            <Param type="int" name="length" desc="" />
+        </Function>
+        <Function name="GetCodepoints" retType="int *" paramCount="2" desc="Get all codepoints in a string, codepoints count returned by parameters">
+            <Param type="const char *" name="text" desc="" />
+            <Param type="int *" name="count" desc="" />
+        </Function>
+        <Function name="GetCodepointsCount" retType="int" paramCount="1" desc="Get total number of characters (codepoints) in a UTF8 encoded string">
+            <Param type="const char *" name="text" desc="" />
+        </Function>
+        <Function name="GetNextCodepoint" retType="int" paramCount="2" desc="Get next codepoint in a UTF8 encoded string; 0x3f('?') is returned on failure">
+            <Param type="const char *" name="text" desc="" />
+            <Param type="int *" name="bytesProcessed" desc="" />
+        </Function>
+        <Function name="CodepointToUtf8" retType="const char *" paramCount="2" desc="Encode codepoint into utf8 text (char array length returned as parameter)">
+            <Param type="int" name="codepoint" desc="" />
+            <Param type="int *" name="byteLength" desc="" />
+        </Function>
+        <Function name="DrawLine3D" retType="void" paramCount="3" desc="Draw a line in 3D world space">
+            <Param type="Vector3" name="startPos" desc="" />
+            <Param type="Vector3" name="endPos" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawPoint3D" retType="void" paramCount="2" desc="Draw a point in 3D space, actually a small line">
+            <Param type="Vector3" name="position" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawCircle3D" retType="void" paramCount="5" desc="Draw a circle in 3D world space">
+            <Param type="Vector3" name="center" desc="" />
+            <Param type="float" name="radius" desc="" />
+            <Param type="Vector3" name="rotationAxis" desc="" />
+            <Param type="float" name="rotationAngle" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawTriangle3D" retType="void" paramCount="4" desc="Draw a color-filled triangle (vertex in counter-clockwise order!)">
+            <Param type="Vector3" name="v1" desc="" />
+            <Param type="Vector3" name="v2" desc="" />
+            <Param type="Vector3" name="v3" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawTriangleStrip3D" retType="void" paramCount="3" desc="Draw a triangle strip defined by points">
+            <Param type="Vector3 *" name="points" desc="" />
+            <Param type="int" name="pointsCount" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawCube" retType="void" paramCount="5" desc="Draw cube">
+            <Param type="Vector3" name="position" desc="" />
+            <Param type="float" name="width" desc="" />
+            <Param type="float" name="height" desc="" />
+            <Param type="float" name="length" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawCubeV" retType="void" paramCount="3" desc="Draw cube (Vector version)">
+            <Param type="Vector3" name="position" desc="" />
+            <Param type="Vector3" name="size" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawCubeWires" retType="void" paramCount="5" desc="Draw cube wires">
+            <Param type="Vector3" name="position" desc="" />
+            <Param type="float" name="width" desc="" />
+            <Param type="float" name="height" desc="" />
+            <Param type="float" name="length" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawCubeWiresV" retType="void" paramCount="3" desc="Draw cube wires (Vector version)">
+            <Param type="Vector3" name="position" desc="" />
+            <Param type="Vector3" name="size" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawCubeTexture" retType="void" paramCount="6" desc="Draw cube textured">
+            <Param type="Texture2D" name="texture" desc="" />
+            <Param type="Vector3" name="position" desc="" />
+            <Param type="float" name="width" desc="" />
+            <Param type="float" name="height" desc="" />
+            <Param type="float" name="length" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawSphere" retType="void" paramCount="3" desc="Draw sphere">
+            <Param type="Vector3" name="centerPos" desc="" />
+            <Param type="float" name="radius" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawSphereEx" retType="void" paramCount="5" desc="Draw sphere with extended parameters">
+            <Param type="Vector3" name="centerPos" desc="" />
+            <Param type="float" name="radius" desc="" />
+            <Param type="int" name="rings" desc="" />
+            <Param type="int" name="slices" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawSphereWires" retType="void" paramCount="5" desc="Draw sphere wires">
+            <Param type="Vector3" name="centerPos" desc="" />
+            <Param type="float" name="radius" desc="" />
+            <Param type="int" name="rings" desc="" />
+            <Param type="int" name="slices" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawCylinder" retType="void" paramCount="6" desc="Draw a cylinder/cone">
+            <Param type="Vector3" name="position" desc="" />
+            <Param type="float" name="radiusTop" desc="" />
+            <Param type="float" name="radiusBottom" desc="" />
+            <Param type="float" name="height" desc="" />
+            <Param type="int" name="slices" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawCylinderWires" retType="void" paramCount="6" desc="Draw a cylinder/cone wires">
+            <Param type="Vector3" name="position" desc="" />
+            <Param type="float" name="radiusTop" desc="" />
+            <Param type="float" name="radiusBottom" desc="" />
+            <Param type="float" name="height" desc="" />
+            <Param type="int" name="slices" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawPlane" retType="void" paramCount="3" desc="Draw a plane XZ">
+            <Param type="Vector3" name="centerPos" desc="" />
+            <Param type="Vector2" name="size" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawRay" retType="void" paramCount="2" desc="Draw a ray line">
+            <Param type="Ray" name="ray" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawGrid" retType="void" paramCount="2" desc="Draw a grid (centered at (0, 0, 0))">
+            <Param type="int" name="slices" desc="" />
+            <Param type="float" name="spacing" desc="" />
+        </Function>
+        <Function name="LoadModel" retType="Model" paramCount="1" desc="Load model from files (meshes and materials)">
+            <Param type="const char *" name="fileName" desc="" />
+        </Function>
+        <Function name="LoadModelFromMesh" retType="Model" paramCount="1" desc="Load model from generated mesh (default material)">
+            <Param type="Mesh" name="mesh" desc="" />
+        </Function>
+        <Function name="UnloadModel" retType="void" paramCount="1" desc="Unload model (including meshes) from memory (RAM and/or VRAM)">
+            <Param type="Model" name="model" desc="" />
+        </Function>
+        <Function name="UnloadModelKeepMeshes" retType="void" paramCount="1" desc="Unload model (but not meshes) from memory (RAM and/or VRAM)">
+            <Param type="Model" name="model" desc="" />
+        </Function>
+        <Function name="UploadMesh" retType="void" paramCount="2" desc="Upload mesh vertex data in GPU and provide VAO/VBO ids">
+            <Param type="Mesh *" name="mesh" desc="" />
+            <Param type="bool" name="dynamic" desc="" />
+        </Function>
+        <Function name="UpdateMeshBuffer" retType="void" paramCount="5" desc="Update mesh vertex data in GPU for a specific buffer index">
+            <Param type="Mesh" name="mesh" desc="" />
+            <Param type="int" name="index" desc="" />
+            <Param type="void *" name="data" desc="" />
+            <Param type="int" name="dataSize" desc="" />
+            <Param type="int" name="offset" desc="" />
+        </Function>
+        <Function name="DrawMesh" retType="void" paramCount="3" desc="Draw a 3d mesh with material and transform">
+            <Param type="Mesh" name="mesh" desc="" />
+            <Param type="Material" name="material" desc="" />
+            <Param type="Matrix" name="transform" desc="" />
+        </Function>
+        <Function name="DrawMeshInstanced" retType="void" paramCount="4" desc="Draw multiple mesh instances with material and different transforms">
+            <Param type="Mesh" name="mesh" desc="" />
+            <Param type="Material" name="material" desc="" />
+            <Param type="Matrix *" name="transforms" desc="" />
+            <Param type="int" name="instances" desc="" />
+        </Function>
+        <Function name="UnloadMesh" retType="void" paramCount="1" desc="Unload mesh data from CPU and GPU">
+            <Param type="Mesh" name="mesh" desc="" />
+        </Function>
+        <Function name="ExportMesh" retType="bool" paramCount="2" desc="Export mesh data to file, returns true on success">
+            <Param type="Mesh" name="mesh" desc="" />
+            <Param type="const char *" name="fileName" desc="" />
+        </Function>
+        <Function name="LoadMaterials" retType="Material *" paramCount="2" desc="Load materials from model file">
+            <Param type="const char *" name="fileName" desc="" />
+            <Param type="int *" name="materialCount" desc="" />
+        </Function>
+        <Function name="LoadMaterialDefault" retType="Material" paramCount="0" desc="Load default material (Supports: DIFFUSE, SPECULAR, NORMAL maps)">
+        </Function>
+        <Function name="UnloadMaterial" retType="void" paramCount="1" desc="Unload material from GPU memory (VRAM)">
+            <Param type="Material" name="material" desc="" />
+        </Function>
+        <Function name="SetMaterialTexture" retType="void" paramCount="3" desc="Set texture for a material map type (MATERIAL_MAP_DIFFUSE, MATERIAL_MAP_SPECULAR...)">
+            <Param type="Material *" name="material" desc="" />
+            <Param type="int" name="mapType" desc="" />
+            <Param type="Texture2D" name="texture" desc="" />
+        </Function>
+        <Function name="SetModelMeshMaterial" retType="void" paramCount="3" desc="Set material for a mesh">
+            <Param type="Model *" name="model" desc="" />
+            <Param type="int" name="meshId" desc="" />
+            <Param type="int" name="materialId" desc="" />
+        </Function>
+        <Function name="LoadModelAnimations" retType="ModelAnimation *" paramCount="2" desc="Load model animations from file">
+            <Param type="const char *" name="fileName" desc="" />
+            <Param type="int *" name="animsCount" desc="" />
+        </Function>
+        <Function name="UpdateModelAnimation" retType="void" paramCount="3" desc="Update model animation pose">
+            <Param type="Model" name="model" desc="" />
+            <Param type="ModelAnimation" name="anim" desc="" />
+            <Param type="int" name="frame" desc="" />
+        </Function>
+        <Function name="UnloadModelAnimation" retType="void" paramCount="1" desc="Unload animation data">
+            <Param type="ModelAnimation" name="anim" desc="" />
+        </Function>
+        <Function name="UnloadModelAnimations" retType="void" paramCount="2" desc="Unload animation array data">
+            <Param type="ModelAnimation*" name="animations" desc="" />
+            <Param type="unsigned int" name="count" desc="" />
+        </Function>
+        <Function name="IsModelAnimationValid" retType="bool" paramCount="2" desc="Check model animation skeleton match">
+            <Param type="Model" name="model" desc="" />
+            <Param type="ModelAnimation" name="anim" desc="" />
+        </Function>
+        <Function name="GenMeshPoly" retType="Mesh" paramCount="2" desc="Generate polygonal mesh">
+            <Param type="int" name="sides" desc="" />
+            <Param type="float" name="radius" desc="" />
+        </Function>
+        <Function name="GenMeshPlane" retType="Mesh" paramCount="4" desc="Generate plane mesh (with subdivisions)">
+            <Param type="float" name="width" desc="" />
+            <Param type="float" name="length" desc="" />
+            <Param type="int" name="resX" desc="" />
+            <Param type="int" name="resZ" desc="" />
+        </Function>
+        <Function name="GenMeshCube" retType="Mesh" paramCount="3" desc="Generate cuboid mesh">
+            <Param type="float" name="width" desc="" />
+            <Param type="float" name="height" desc="" />
+            <Param type="float" name="length" desc="" />
+        </Function>
+        <Function name="GenMeshSphere" retType="Mesh" paramCount="3" desc="Generate sphere mesh (standard sphere)">
+            <Param type="float" name="radius" desc="" />
+            <Param type="int" name="rings" desc="" />
+            <Param type="int" name="slices" desc="" />
+        </Function>
+        <Function name="GenMeshHemiSphere" retType="Mesh" paramCount="3" desc="Generate half-sphere mesh (no bottom cap)">
+            <Param type="float" name="radius" desc="" />
+            <Param type="int" name="rings" desc="" />
+            <Param type="int" name="slices" desc="" />
+        </Function>
+        <Function name="GenMeshCylinder" retType="Mesh" paramCount="3" desc="Generate cylinder mesh">
+            <Param type="float" name="radius" desc="" />
+            <Param type="float" name="height" desc="" />
+            <Param type="int" name="slices" desc="" />
+        </Function>
+        <Function name="GenMeshTorus" retType="Mesh" paramCount="4" desc="Generate torus mesh">
+            <Param type="float" name="radius" desc="" />
+            <Param type="float" name="size" desc="" />
+            <Param type="int" name="radSeg" desc="" />
+            <Param type="int" name="sides" desc="" />
+        </Function>
+        <Function name="GenMeshKnot" retType="Mesh" paramCount="4" desc="Generate trefoil knot mesh">
+            <Param type="float" name="radius" desc="" />
+            <Param type="float" name="size" desc="" />
+            <Param type="int" name="radSeg" desc="" />
+            <Param type="int" name="sides" desc="" />
+        </Function>
+        <Function name="GenMeshHeightmap" retType="Mesh" paramCount="2" desc="Generate heightmap mesh from image data">
+            <Param type="Image" name="heightmap" desc="" />
+            <Param type="Vector3" name="size" desc="" />
+        </Function>
+        <Function name="GenMeshCubicmap" retType="Mesh" paramCount="2" desc="Generate cubes-based map mesh from image data">
+            <Param type="Image" name="cubicmap" desc="" />
+            <Param type="Vector3" name="cubeSize" desc="" />
+        </Function>
+        <Function name="GetMeshBoundingBox" retType="BoundingBox" paramCount="1" desc="Compute mesh bounding box limits">
+            <Param type="Mesh" name="mesh" desc="" />
+        </Function>
+        <Function name="MeshTangents" retType="void" paramCount="1" desc="Compute mesh tangents">
+            <Param type="Mesh *" name="mesh" desc="" />
+        </Function>
+        <Function name="MeshBinormals" retType="void" paramCount="1" desc="Compute mesh binormals">
+            <Param type="Mesh *" name="mesh" desc="" />
+        </Function>
+        <Function name="DrawModel" retType="void" paramCount="4" desc="Draw a model (with texture if set)">
+            <Param type="Model" name="model" desc="" />
+            <Param type="Vector3" name="position" desc="" />
+            <Param type="float" name="scale" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="DrawModelEx" retType="void" paramCount="6" desc="Draw a model with extended parameters">
+            <Param type="Model" name="model" desc="" />
+            <Param type="Vector3" name="position" desc="" />
+            <Param type="Vector3" name="rotationAxis" desc="" />
+            <Param type="float" name="rotationAngle" desc="" />
+            <Param type="Vector3" name="scale" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="DrawModelWires" retType="void" paramCount="4" desc="Draw a model wires (with texture if set)">
+            <Param type="Model" name="model" desc="" />
+            <Param type="Vector3" name="position" desc="" />
+            <Param type="float" name="scale" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="DrawModelWiresEx" retType="void" paramCount="6" desc="Draw a model wires (with texture if set) with extended parameters">
+            <Param type="Model" name="model" desc="" />
+            <Param type="Vector3" name="position" desc="" />
+            <Param type="Vector3" name="rotationAxis" desc="" />
+            <Param type="float" name="rotationAngle" desc="" />
+            <Param type="Vector3" name="scale" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="DrawBoundingBox" retType="void" paramCount="2" desc="Draw bounding box (wires)">
+            <Param type="BoundingBox" name="box" desc="" />
+            <Param type="Color" name="color" desc="" />
+        </Function>
+        <Function name="DrawBillboard" retType="void" paramCount="5" desc="Draw a billboard texture">
+            <Param type="Camera" name="camera" desc="" />
+            <Param type="Texture2D" name="texture" desc="" />
+            <Param type="Vector3" name="position" desc="" />
+            <Param type="float" name="size" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="DrawBillboardRec" retType="void" paramCount="6" desc="Draw a billboard texture defined by source">
+            <Param type="Camera" name="camera" desc="" />
+            <Param type="Texture2D" name="texture" desc="" />
+            <Param type="Rectangle" name="source" desc="" />
+            <Param type="Vector3" name="position" desc="" />
+            <Param type="Vector2" name="size" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="DrawBillboardPro" retType="void" paramCount="8" desc="Draw a billboard texture defined by source and rotation">
+            <Param type="Camera" name="camera" desc="" />
+            <Param type="Texture2D" name="texture" desc="" />
+            <Param type="Rectangle" name="source" desc="" />
+            <Param type="Vector3" name="position" desc="" />
+            <Param type="Vector2" name="size" desc="" />
+            <Param type="Vector2" name="origin" desc="" />
+            <Param type="float" name="rotation" desc="" />
+            <Param type="Color" name="tint" desc="" />
+        </Function>
+        <Function name="CheckCollisionSpheres" retType="bool" paramCount="4" desc="Check collision between two spheres">
+            <Param type="Vector3" name="center1" desc="" />
+            <Param type="float" name="radius1" desc="" />
+            <Param type="Vector3" name="center2" desc="" />
+            <Param type="float" name="radius2" desc="" />
+        </Function>
+        <Function name="CheckCollisionBoxes" retType="bool" paramCount="2" desc="Check collision between two bounding boxes">
+            <Param type="BoundingBox" name="box1" desc="" />
+            <Param type="BoundingBox" name="box2" desc="" />
+        </Function>
+        <Function name="CheckCollisionBoxSphere" retType="bool" paramCount="3" desc="Check collision between box and sphere">
+            <Param type="BoundingBox" name="box" desc="" />
+            <Param type="Vector3" name="center" desc="" />
+            <Param type="float" name="radius" desc="" />
+        </Function>
+        <Function name="GetRayCollisionSphere" retType="RayCollision" paramCount="3" desc="Get collision info between ray and sphere">
+            <Param type="Ray" name="ray" desc="" />
+            <Param type="Vector3" name="center" desc="" />
+            <Param type="float" name="radius" desc="" />
+        </Function>
+        <Function name="GetRayCollisionBox" retType="RayCollision" paramCount="2" desc="Get collision info between ray and box">
+            <Param type="Ray" name="ray" desc="" />
+            <Param type="BoundingBox" name="box" desc="" />
+        </Function>
+        <Function name="GetRayCollisionModel" retType="RayCollision" paramCount="2" desc="Get collision info between ray and model">
+            <Param type="Ray" name="ray" desc="" />
+            <Param type="Model" name="model" desc="" />
+        </Function>
+        <Function name="GetRayCollisionMesh" retType="RayCollision" paramCount="3" desc="Get collision info between ray and mesh">
+            <Param type="Ray" name="ray" desc="" />
+            <Param type="Mesh" name="mesh" desc="" />
+            <Param type="Matrix" name="transform" desc="" />
+        </Function>
+        <Function name="GetRayCollisionTriangle" retType="RayCollision" paramCount="4" desc="Get collision info between ray and triangle">
+            <Param type="Ray" name="ray" desc="" />
+            <Param type="Vector3" name="p1" desc="" />
+            <Param type="Vector3" name="p2" desc="" />
+            <Param type="Vector3" name="p3" desc="" />
+        </Function>
+        <Function name="GetRayCollisionQuad" retType="RayCollision" paramCount="5" desc="Get collision info between ray and quad">
+            <Param type="Ray" name="ray" desc="" />
+            <Param type="Vector3" name="p1" desc="" />
+            <Param type="Vector3" name="p2" desc="" />
+            <Param type="Vector3" name="p3" desc="" />
+            <Param type="Vector3" name="p4" desc="" />
+        </Function>
+        <Function name="InitAudioDevice" retType="void" paramCount="0" desc="Initialize audio device and context">
+        </Function>
+        <Function name="CloseAudioDevice" retType="void" paramCount="0" desc="Close the audio device and context">
+        </Function>
+        <Function name="IsAudioDeviceReady" retType="bool" paramCount="0" desc="Check if audio device has been initialized successfully">
+        </Function>
+        <Function name="SetMasterVolume" retType="void" paramCount="1" desc="Set master volume (listener)">
+            <Param type="float" name="volume" desc="" />
+        </Function>
+        <Function name="LoadWave" retType="Wave" paramCount="1" desc="Load wave data from file">
+            <Param type="const char *" name="fileName" desc="" />
+        </Function>
+        <Function name="LoadWaveFromMemory" retType="Wave" paramCount="3" desc="Load wave from memory buffer, fileType refers to extension: i.e. '.wav'">
+            <Param type="const char *" name="fileType" desc="" />
+            <Param type="const unsigned char *" name="fileData" desc="" />
+            <Param type="int" name="dataSize" desc="" />
+        </Function>
+        <Function name="LoadSound" retType="Sound" paramCount="1" desc="Load sound from file">
+            <Param type="const char *" name="fileName" desc="" />
+        </Function>
+        <Function name="LoadSoundFromWave" retType="Sound" paramCount="1" desc="Load sound from wave data">
+            <Param type="Wave" name="wave" desc="" />
+        </Function>
+        <Function name="UpdateSound" retType="void" paramCount="3" desc="Update sound buffer with new data">
+            <Param type="Sound" name="sound" desc="" />
+            <Param type="const void *" name="data" desc="" />
+            <Param type="int" name="samplesCount" desc="" />
+        </Function>
+        <Function name="UnloadWave" retType="void" paramCount="1" desc="Unload wave data">
+            <Param type="Wave" name="wave" desc="" />
+        </Function>
+        <Function name="UnloadSound" retType="void" paramCount="1" desc="Unload sound">
+            <Param type="Sound" name="sound" desc="" />
+        </Function>
+        <Function name="ExportWave" retType="bool" paramCount="2" desc="Export wave data to file, returns true on success">
+            <Param type="Wave" name="wave" desc="" />
+            <Param type="const char *" name="fileName" desc="" />
+        </Function>
+        <Function name="ExportWaveAsCode" retType="bool" paramCount="2" desc="Export wave sample data to code (.h), returns true on success">
+            <Param type="Wave" name="wave" desc="" />
+            <Param type="const char *" name="fileName" desc="" />
+        </Function>
+        <Function name="PlaySound" retType="void" paramCount="1" desc="Play a sound">
+            <Param type="Sound" name="sound" desc="" />
+        </Function>
+        <Function name="StopSound" retType="void" paramCount="1" desc="Stop playing a sound">
+            <Param type="Sound" name="sound" desc="" />
+        </Function>
+        <Function name="PauseSound" retType="void" paramCount="1" desc="Pause a sound">
+            <Param type="Sound" name="sound" desc="" />
+        </Function>
+        <Function name="ResumeSound" retType="void" paramCount="1" desc="Resume a paused sound">
+            <Param type="Sound" name="sound" desc="" />
+        </Function>
+        <Function name="PlaySoundMulti" retType="void" paramCount="1" desc="Play a sound (using multichannel buffer pool)">
+            <Param type="Sound" name="sound" desc="" />
+        </Function>
+        <Function name="StopSoundMulti" retType="void" paramCount="0" desc="Stop any sound playing (using multichannel buffer pool)">
+        </Function>
+        <Function name="GetSoundsPlaying" retType="int" paramCount="0" desc="Get number of sounds playing in the multichannel">
+        </Function>
+        <Function name="IsSoundPlaying" retType="bool" paramCount="1" desc="Check if a sound is currently playing">
+            <Param type="Sound" name="sound" desc="" />
+        </Function>
+        <Function name="SetSoundVolume" retType="void" paramCount="2" desc="Set volume for a sound (1.0 is max level)">
+            <Param type="Sound" name="sound" desc="" />
+            <Param type="float" name="volume" desc="" />
+        </Function>
+        <Function name="SetSoundPitch" retType="void" paramCount="2" desc="Set pitch for a sound (1.0 is base level)">
+            <Param type="Sound" name="sound" desc="" />
+            <Param type="float" name="pitch" desc="" />
+        </Function>
+        <Function name="WaveFormat" retType="void" paramCount="4" desc="Convert wave data to desired format">
+            <Param type="Wave *" name="wave" desc="" />
+            <Param type="int" name="sampleRate" desc="" />
+            <Param type="int" name="sampleSize" desc="" />
+            <Param type="int" name="channels" desc="" />
+        </Function>
+        <Function name="WaveCopy" retType="Wave" paramCount="1" desc="Copy a wave to a new wave">
+            <Param type="Wave" name="wave" desc="" />
+        </Function>
+        <Function name="WaveCrop" retType="void" paramCount="3" desc="Crop a wave to defined samples range">
+            <Param type="Wave *" name="wave" desc="" />
+            <Param type="int" name="initSample" desc="" />
+            <Param type="int" name="finalSample" desc="" />
+        </Function>
+        <Function name="LoadWaveSamples" retType="float *" paramCount="1" desc="Load samples data from wave as a floats array">
+            <Param type="Wave" name="wave" desc="" />
+        </Function>
+        <Function name="UnloadWaveSamples" retType="void" paramCount="1" desc="Unload samples data loaded with LoadWaveSamples()">
+            <Param type="float *" name="samples" desc="" />
+        </Function>
+        <Function name="LoadMusicStream" retType="Music" paramCount="1" desc="Load music stream from file">
+            <Param type="const char *" name="fileName" desc="" />
+        </Function>
+        <Function name="LoadMusicStreamFromMemory" retType="Music" paramCount="3" desc="Load music stream from data">
+            <Param type="const char *" name="fileType" desc="" />
+            <Param type="unsigned char *" name="data" desc="" />
+            <Param type="int" name="dataSize" desc="" />
+        </Function>
+        <Function name="UnloadMusicStream" retType="void" paramCount="1" desc="Unload music stream">
+            <Param type="Music" name="music" desc="" />
+        </Function>
+        <Function name="PlayMusicStream" retType="void" paramCount="1" desc="Start music playing">
+            <Param type="Music" name="music" desc="" />
+        </Function>
+        <Function name="IsMusicStreamPlaying" retType="bool" paramCount="1" desc="Check if music is playing">
+            <Param type="Music" name="music" desc="" />
+        </Function>
+        <Function name="UpdateMusicStream" retType="void" paramCount="1" desc="Updates buffers for music streaming">
+            <Param type="Music" name="music" desc="" />
+        </Function>
+        <Function name="StopMusicStream" retType="void" paramCount="1" desc="Stop music playing">
+            <Param type="Music" name="music" desc="" />
+        </Function>
+        <Function name="PauseMusicStream" retType="void" paramCount="1" desc="Pause music playing">
+            <Param type="Music" name="music" desc="" />
+        </Function>
+        <Function name="ResumeMusicStream" retType="void" paramCount="1" desc="Resume playing paused music">
+            <Param type="Music" name="music" desc="" />
+        </Function>
+        <Function name="SetMusicVolume" retType="void" paramCount="2" desc="Set volume for music (1.0 is max level)">
+            <Param type="Music" name="music" desc="" />
+            <Param type="float" name="volume" desc="" />
+        </Function>
+        <Function name="SetMusicPitch" retType="void" paramCount="2" desc="Set pitch for a music (1.0 is base level)">
+            <Param type="Music" name="music" desc="" />
+            <Param type="float" name="pitch" desc="" />
+        </Function>
+        <Function name="GetMusicTimeLength" retType="float" paramCount="1" desc="Get music time length (in seconds)">
+            <Param type="Music" name="music" desc="" />
+        </Function>
+        <Function name="GetMusicTimePlayed" retType="float" paramCount="1" desc="Get current music time played (in seconds)">
+            <Param type="Music" name="music" desc="" />
+        </Function>
+        <Function name="LoadAudioStream" retType="AudioStream" paramCount="3" desc="Load audio stream (to stream raw audio pcm data)">
+            <Param type="unsigned int" name="sampleRate" desc="" />
+            <Param type="unsigned int" name="sampleSize" desc="" />
+            <Param type="unsigned int" name="channels" desc="" />
+        </Function>
+        <Function name="UnloadAudioStream" retType="void" paramCount="1" desc="Unload audio stream and free memory">
+            <Param type="AudioStream" name="stream" desc="" />
+        </Function>
+        <Function name="UpdateAudioStream" retType="void" paramCount="3" desc="Update audio stream buffers with data">
+            <Param type="AudioStream" name="stream" desc="" />
+            <Param type="const void *" name="data" desc="" />
+            <Param type="int" name="samplesCount" desc="" />
+        </Function>
+        <Function name="IsAudioStreamProcessed" retType="bool" paramCount="1" desc="Check if any audio stream buffers requires refill">
+            <Param type="AudioStream" name="stream" desc="" />
+        </Function>
+        <Function name="PlayAudioStream" retType="void" paramCount="1" desc="Play audio stream">
+            <Param type="AudioStream" name="stream" desc="" />
+        </Function>
+        <Function name="PauseAudioStream" retType="void" paramCount="1" desc="Pause audio stream">
+            <Param type="AudioStream" name="stream" desc="" />
+        </Function>
+        <Function name="ResumeAudioStream" retType="void" paramCount="1" desc="Resume audio stream">
+            <Param type="AudioStream" name="stream" desc="" />
+        </Function>
+        <Function name="IsAudioStreamPlaying" retType="bool" paramCount="1" desc="Check if audio stream is playing">
+            <Param type="AudioStream" name="stream" desc="" />
+        </Function>
+        <Function name="StopAudioStream" retType="void" paramCount="1" desc="Stop audio stream">
+            <Param type="AudioStream" name="stream" desc="" />
+        </Function>
+        <Function name="SetAudioStreamVolume" retType="void" paramCount="2" desc="Set volume for audio stream (1.0 is max level)">
+            <Param type="AudioStream" name="stream" desc="" />
+            <Param type="float" name="volume" desc="" />
+        </Function>
+        <Function name="SetAudioStreamPitch" retType="void" paramCount="2" desc="Set pitch for audio stream (1.0 is base level)">
+            <Param type="AudioStream" name="stream" desc="" />
+            <Param type="float" name="pitch" desc="" />
+        </Function>
+        <Function name="SetAudioStreamBufferSizeDefault" retType="void" paramCount="1" desc="Default size for new audio streams">
+            <Param type="int" name="size" desc="" />
+        </Function>
+    </Functions>
+</raylibAPI>

+ 440 - 258
parser/raylib_parser.c

@@ -1,35 +1,35 @@
 /**********************************************************************************************
 
-    raylib parser - raylib header parser
+    raylib API parser
+
+    This parser scans raylib.h to get API information about structs, enums and functions.
+    All data is divided into pieces, usually as strings. The following types are used for data:
 
-    This parser scans raylib.h to get information about structs, enums and functions.
-    All data is separated into parts, usually as strings. The following types are used for data:
-    
      - struct FunctionInfo
      - struct StructInfo
      - struct EnumInfo
 
-    CONSTRAINTS: 
-    
-    This parser is specifically designed to work with raylib.h, so, it has some constraints: 
-    
+    CONSTRAINTS:
+
+    This parser is specifically designed to work with raylib.h, so, it has some constraints:
+
      - Functions are expected as a single line with the following structure:
 
        <retType> <name>(<paramType[0]> <paramName[0]>, <paramType[1]> <paramName[1]>);  <desc>
 
        Be careful with functions broken into several lines, it breaks the process!
-       
+
      - Structures are expected as several lines with the following form:
-     
+
        <desc>
        typedef struct <name> {
            <fieldType[0]> <fieldName[0]>;  <fieldDesc[0]>
            <fieldType[1]> <fieldName[1]>;  <fieldDesc[1]>
            <fieldType[2]> <fieldName[2]>;  <fieldDesc[2]>
        } <name>;
-       
+
      - Enums are expected as several lines with the following form:
-     
+
        <desc>
        typedef enum {
            <valueName[0]> = <valueInteger[0]>, <valueDesc[0]>
@@ -37,14 +37,16 @@
            <valueName[2]>, <valueDesc[2]>
            <valueName[3]>  <valueDesc[3]>
        } <name>;
-       
-       NOTE: Multiple options are supported: 
+
+       NOTE: Multiple options are supported for enums:
           - If value is not provided, (<valueInteger[i -1]> + 1) is assigned
           - Value description can be provided or not
-          
-    This parser could work with other C header files if mentioned constraints are followed.
-    
-    This parser does not require <string.h> library, all data is parsed directly from char buffers.
+
+    OTHER NOTES:
+
+     - This parser could work with other C header files if mentioned constraints are followed.
+
+     - This parser does not require <string.h> library, all data is parsed directly from char buffers.
 
     LICENSE: zlib/libpng
 
@@ -55,6 +57,8 @@
 
 **********************************************************************************************/
 
+#define _CRT_SECURE_NO_WARNINGS
+
 #include <stdlib.h>             // Required for: malloc(), calloc(), realloc(), free(), atoi(), strtol()
 #include <stdio.h>              // Required for: printf(), fopen(), fseek(), ftell(), fread(), fclose()
 #include <stdbool.h>            // Required for: bool
@@ -66,8 +70,6 @@
 #define MAX_LINE_LENGTH          512    // Maximum length of one line (including comments)
 #define MAX_STRUCT_LINE_LENGTH  2048    // Maximum length of one struct (multiple lines)
 
-enum OutputFormat { PlainText, JSON };       // Which format the header information should be in
-
 //----------------------------------------------------------------------------------
 // Types and Structures Definition
 //----------------------------------------------------------------------------------
@@ -79,6 +81,7 @@ typedef struct FunctionInfo {
     int paramCount;             // Number of function parameters
     char paramType[12][32];     // Parameters type (max: 12 parameters)
     char paramName[12][32];     // Parameters name (max: 12 parameters)
+    char paramDesc[12][8];    // Parameters description (max: 12 parameters)
 } FunctionInfo;
 
 // Struct info data
@@ -101,59 +104,70 @@ typedef struct EnumInfo {
     char valueDesc[128][64];    // Value description (max: 128 values)
 } EnumInfo;
 
+// Output format for parsed data
+typedef enum { DEFAULT = 0, JSON, XML } OutputFormat;
+
+//----------------------------------------------------------------------------------
+// Global Variables Definition
+//----------------------------------------------------------------------------------
+static int funcCount = 0;
+static int structCount = 0;
+static int enumCount = 0;
+static FunctionInfo *funcs = NULL;
+static StructInfo *structs = NULL;
+static EnumInfo *enums = NULL;
+
+// Command line variables
+static char inFileName[512] = { 0 };       // Input file name (required in case of provided through CLI)
+static char outFileName[512] = { 0 };      // Output file name (required for file save/export)
+static int outputFormat = DEFAULT;
+
 //----------------------------------------------------------------------------------
 // Module Functions Declaration
 //----------------------------------------------------------------------------------
-char *LoadFileText(const char *fileName, int *length);
-char **GetTextLines(const char *buffer, int length, int *linesCount);
-void GetDataTypeAndName(const char *typeName, int typeNameLen, char *type, char *name);
-bool IsTextEqual(const char *text1, const char *text2, unsigned int count);
-void MemoryCopy(void *dest, const void *src, unsigned int count);
-char* CharReplace(char* text, char search, char replace);
-
-// Main entry point
+static void ShowCommandLineInfo(void);                      // Show command line usage info
+static void ProcessCommandLine(int argc, char *argv[]);     // Process command line input
+
+static char *LoadFileText(const char *fileName, int *length);
+static char **GetTextLines(const char *buffer, int length, int *linesCount);
+static void GetDataTypeAndName(const char *typeName, int typeNameLen, char *type, char *name);
+static unsigned int TextLength(const char *text);           // Get text length in bytes, check for \0 character
+static bool IsTextEqual(const char *text1, const char *text2, unsigned int count);
+static void MemoryCopy(void *dest, const void *src, unsigned int count);
+static char* CharReplace(char* text, char search, char replace);
+
+static void ExportParsedData(const char *fileName, int format); // Export parsed data in desired format
+
+//------------------------------------------------------------------------------------
+// Program main entry point
+//------------------------------------------------------------------------------------
 int main(int argc, char* argv[])
 {
-    // Help
-    if (argv[1] != NULL && IsTextEqual(argv[1], "--help", 6)) {
-        printf("Usage:\n");
-        printf("  raylib_parser [--json]\n");
-        return 0;
-    }
+    if (argc > 1) ProcessCommandLine(argc, argv);
 
-    // Allow changing the output format.
-    int outputFormat = 0;
-    if (argv[1] != NULL && IsTextEqual(argv[1], "--json", 6)) {
-        outputFormat = JSON;
-    }
+    if (inFileName[0] == '\0') MemoryCopy(inFileName, "../src/raylib.h\0", 16);
 
     int length = 0;
-    char *buffer = LoadFileText("../src/raylib.h", &length);
-    
+    char *buffer = LoadFileText(inFileName, &length);
+
     // Preprocess buffer to get separate lines
     // NOTE: GetTextLines() also removes leading spaces/tabs
     int linesCount = 0;
     char **lines = GetTextLines(buffer, length, &linesCount);
-    
-    // Print buffer lines
-    //for (int i = 0; i < linesCount; i++) printf("_%s_\n", lines[i]);
-    
+
     // Function lines pointers, selected from buffer "lines"
-    int funcCount = 0;
     char **funcLines = (char **)malloc(MAX_FUNCS_TO_PARSE*sizeof(char *));
 
     // Structs data (multiple lines), selected from "buffer"
-    int structCount = 0;
     char **structLines = (char **)malloc(MAX_STRUCTS_TO_PARSE*sizeof(char *));
     for (int i = 0; i < MAX_STRUCTS_TO_PARSE; i++) structLines[i] = (char *)calloc(MAX_STRUCT_LINE_LENGTH, sizeof(char));
-    
+
     // Enums lines pointers, selected from buffer "lines"
-    int enumCount = 0;
     int *enumLines = (int *)malloc(MAX_ENUMS_TO_PARSE*sizeof(int));
-    
+
     // Prepare required lines for parsing
     //--------------------------------------------------------------------------------------------------
-    
+
     // Read function lines
     for (int i = 0; i < linesCount; i++)
     {
@@ -165,9 +179,6 @@ int main(int argc, char* argv[])
             funcCount++;
         }
     }
-    
-    // Print function lines
-    //for (int i = 0; i < funcCount; i++) printf("%s\n", funcLines[i]);
 
     // Read structs data (multiple lines, read directly from buffer)
     // TODO: Parse structs data from "lines" instead of "buffer" -> Easier to get struct definition
@@ -179,9 +190,9 @@ int main(int argc, char* argv[])
         {
             int j = 0;
             bool validStruct = false;
-            
-            // WARNING: Typedefs between types: typedef Vector4 Quaternion; 
-            
+
+            // WARNING: Typedefs between types: typedef Vector4 Quaternion;
+
             for (int c = 0; c < 128; c++)
             {
                 if (buffer[i + c] == '{')
@@ -191,13 +202,13 @@ int main(int argc, char* argv[])
                 }
                 else if (buffer[i + c] == ';')
                 {
-                    // Not valid struct: 
+                    // Not valid struct:
                     // i.e typedef struct rAudioBuffer rAudioBuffer; -> Typedef and forward declaration
                     i += c;
                     break;
                 }
             }
-            
+
             if (validStruct)
             {
                 while (buffer[i + j] != '}')
@@ -223,7 +234,7 @@ int main(int argc, char* argv[])
             }
         }
     }
-    
+
     // Read enum lines
     for (int i = 0; i < linesCount; i++)
     {
@@ -236,17 +247,17 @@ int main(int argc, char* argv[])
             enumCount++;
         }
     }
-    
+
     // At this point we have all raylib structs, enums, functions lines data to start parsing
-       
+
     free(buffer);       // Unload text buffer
 
     // Parsing raylib data
     //--------------------------------------------------------------------------------------------------
 
     // Structs info data
-    StructInfo *structs = (StructInfo *)calloc(MAX_STRUCTS_TO_PARSE, sizeof(StructInfo));
-    
+    structs = (StructInfo *)calloc(MAX_STRUCTS_TO_PARSE, sizeof(StructInfo));
+
     for (int i = 0; i < structCount; i++)
     {
         int structLineOffset = 0;
@@ -254,52 +265,52 @@ int main(int argc, char* argv[])
         // Get struct name: typedef struct name {
         for (int c = 15; c < 64 + 15; c++)
         {
-            if (structLines[i][c] == '{') 
+            if (structLines[i][c] == '{')
             {
                 structLineOffset = c + 2;
-                
+
                 MemoryCopy(structs[i].name, &structLines[i][15], c - 15 - 1);
                 break;
             }
         }
-        
+
         // Get struct fields and count them -> fields finish with ;
         int j = 0;
         while (structLines[i][structLineOffset + j] != '}')
         {
             // WARNING: Some structs have empty spaces and comments -> OK, processed
-            
+
             int fieldStart = 0;
             if ((structLines[i][structLineOffset + j] != ' ') && (structLines[i][structLineOffset + j] != '\n')) fieldStart = structLineOffset + j;
-            
+
             if (fieldStart != 0)
             {
                 // Scan one field line
                 int c = 0;
                 int fieldEndPos = 0;
                 char fieldLine[256] = { 0 };
-                
+
                 while (structLines[i][structLineOffset + j] != '\n')
                 {
                     if (structLines[i][structLineOffset + j] == ';') fieldEndPos = c;
                     fieldLine[c] = structLines[i][structLineOffset + j];
                     c++; j++;
                 }
-                
+
                 if (fieldLine[0] != '/')    // Field line is not a comment
                 {
                     //printf("Struct field: %s_\n", fieldLine);     // OK!
-                    
+
                     // Get struct field type and name
                     GetDataTypeAndName(fieldLine, fieldEndPos, structs[i].fieldType[structs[i].fieldCount], structs[i].fieldName[structs[i].fieldCount]);
-                    
+
                     // Get the field description
                     // We start skipping spaces in front of description comment
                     int descStart = fieldEndPos;
                     while ((fieldLine[descStart] != '/') && (fieldLine[descStart] != '\0')) descStart++;
-                    
+
                     int k = 0;
-                    while ((fieldLine[descStart + k] != '\0') && (fieldLine[descStart + k] != '\n')) 
+                    while ((fieldLine[descStart + k] != '\0') && (fieldLine[descStart + k] != '\n'))
                     {
                         structs[i].fieldDesc[structs[i].fieldCount][k] = fieldLine[descStart + k];
                         k++;
@@ -313,17 +324,17 @@ int main(int argc, char* argv[])
         }
 
     }
-    
+
     for (int i = 0; i < MAX_STRUCTS_TO_PARSE; i++) free(structLines[i]);
     free(structLines);
-    
+
     // Enum info data
-    EnumInfo *enums = (EnumInfo *)calloc(MAX_ENUMS_TO_PARSE, sizeof(EnumInfo));
-    
+    enums = (EnumInfo *)calloc(MAX_ENUMS_TO_PARSE, sizeof(EnumInfo));
+
     for (int i = 0; i < enumCount; i++)
     {
         // TODO: Get enum description from lines[enumLines[i] - 1]
-        
+
         for (int j = 1; j < 256; j++)   // Maximum number of lines following enum first line
         {
             char *linePtr = lines[enumLines[i] + j];
@@ -336,20 +347,20 @@ int main(int argc, char* argv[])
                 //ENUM_VALUE_NAME     = 99
                 //ENUM_VALUE_NAME     = 99,
                 //ENUM_VALUE_NAME     = 0x00000040,   // Value description
-                
+
                 // We start reading the value name
                 int c = 0;
-                while ((linePtr[c] != ',') && 
-                       (linePtr[c] != ' ') && 
+                while ((linePtr[c] != ',') &&
+                       (linePtr[c] != ' ') &&
                        (linePtr[c] != '=') &&
                        (linePtr[c] != '\0')) { enums[i].valueName[enums[i].valueCount][c] = linePtr[c]; c++; }
 
-                // After the name we can have: 
+                // After the name we can have:
                 //  '='  -> value is provided
                 //  ','  -> value is equal to previous + 1, there could be a description if not '\0'
                 //  ' '  -> value is equal to previous + 1, there could be a description if not '\0'
                 //  '\0' -> value is equal to previous + 1
-                
+
                 // Let's start checking if the line is not finished
                 if ((linePtr[c] != ',') && (linePtr[c] != '\0'))
                 {
@@ -357,7 +368,7 @@ int main(int argc, char* argv[])
                     //  '='  -> value is provided
                     //  ' '  -> value is equal to previous + 1, there could be a description if not '\0'
                     bool foundValue = false;
-                    while (linePtr[c] != '\0') 
+                    while (linePtr[c] != '\0')
                     {
                         if (linePtr[c] == '=') { foundValue = true; break; }
                         c++;
@@ -367,64 +378,64 @@ int main(int argc, char* argv[])
                     {
                         if (linePtr[c + 1] == ' ') c += 2;
                         else c++;
-                        
+  
                         // Parse integer value
                         int n = 0;
                         char integer[16] = { 0 };
-                        
-                        while ((linePtr[c] != ',') && (linePtr[c] != ' ') && (linePtr[c] != '\0')) 
+  
+                        while ((linePtr[c] != ',') && (linePtr[c] != ' ') && (linePtr[c] != '\0'))
                         {
                             integer[n] = linePtr[c];
                             c++; n++;
                         }
-                        
+  
                         if (integer[1] == 'x') enums[i].valueInteger[enums[i].valueCount] = (int)strtol(integer, NULL, 16);
                         else enums[i].valueInteger[enums[i].valueCount] = atoi(integer);
                     }
                     else enums[i].valueInteger[enums[i].valueCount] = (enums[i].valueInteger[enums[i].valueCount - 1] + 1);
-                    
+
                     // TODO: Parse value description if any
                 }
                 else enums[i].valueInteger[enums[i].valueCount] = (enums[i].valueInteger[enums[i].valueCount - 1] + 1);
 
                 enums[i].valueCount++;
             }
-            else if (linePtr[0] == '}') 
+            else if (linePtr[0] == '}')
             {
                 // Get enum name from typedef
                 int c = 0;
                 while (linePtr[2 + c] != ';') { enums[i].name[c] = linePtr[2 + c]; c++; }
-                
+
                 break;  // Enum ended, break for() loop
             }
         }
     }
-    
+
     // Functions info data
-    FunctionInfo *funcs = (FunctionInfo *)calloc(MAX_FUNCS_TO_PARSE, sizeof(FunctionInfo));
-    
+    funcs = (FunctionInfo *)calloc(MAX_FUNCS_TO_PARSE, sizeof(FunctionInfo));
+
     for (int i = 0; i < funcCount; i++)
     {
         int funcParamsStart = 0;
         int funcEnd = 0;
-        
+
         // Get return type and function name from func line
         for (int c = 0; (c < MAX_LINE_LENGTH) && (funcLines[i][c] != '\n'); c++)
         {
             if (funcLines[i][c] == '(')     // Starts function parameters
             {
                 funcParamsStart = c + 1;
-                
+
                 // At this point we have function return type and function name
                 char funcRetTypeName[128] = { 0 };
                 int funcRetTypeNameLen = c - 6;     // Substract "RLAPI "
                 MemoryCopy(funcRetTypeName, &funcLines[i][6], funcRetTypeNameLen);
-                
+
                 GetDataTypeAndName(funcRetTypeName, funcRetTypeNameLen, funcs[i].retType, funcs[i].name);
                 break;
             }
         }
-        
+
         // Get parameters from func line
         for (int c = funcParamsStart; c < MAX_LINE_LENGTH; c++)
         {
@@ -434,9 +445,9 @@ int main(int argc, char* argv[])
                 char funcParamTypeName[128] = { 0 };
                 int funcParamTypeNameLen = c - funcParamsStart;
                 MemoryCopy(funcParamTypeName, &funcLines[i][funcParamsStart], funcParamTypeNameLen);
-                
+
                 GetDataTypeAndName(funcParamTypeName, funcParamTypeNameLen, funcs[i].paramType[funcs[i].paramCount], funcs[i].paramName[funcs[i].paramCount]);
-                
+
                 funcParamsStart = c + 1;
                 if (funcLines[i][c + 1] == ' ') funcParamsStart += 1;
                 funcs[i].paramCount++;      // Move to next parameter
@@ -444,170 +455,54 @@ int main(int argc, char* argv[])
             else if (funcLines[i][c] == ')')
             {
                 funcEnd = c + 2;
-                
+
                 // Check if previous word is void
                 if ((funcLines[i][c - 4] == 'v') && (funcLines[i][c - 3] == 'o') && (funcLines[i][c - 2] == 'i') && (funcLines[i][c - 1] == 'd')) break;
-                
+
                 // Get parameter type + name, extract info
                 char funcParamTypeName[128] = { 0 };
                 int funcParamTypeNameLen = c - funcParamsStart;
                 MemoryCopy(funcParamTypeName, &funcLines[i][funcParamsStart], funcParamTypeNameLen);
-                
+
                 GetDataTypeAndName(funcParamTypeName, funcParamTypeNameLen, funcs[i].paramType[funcs[i].paramCount], funcs[i].paramName[funcs[i].paramCount]);
 
                 funcs[i].paramCount++;      // Move to next parameter
                 break;
             }
         }
-        
+
         // Get function description
         for (int c = funcEnd; c < MAX_LINE_LENGTH; c++)
         {
-            if (funcLines[i][c] == '/') 
+            if (funcLines[i][c] == '/')
             {
                 MemoryCopy(funcs[i].desc, &funcLines[i][c], 127);   // WARNING: Size could be too long for funcLines[i][c]?
                 break;
             }
         }
     }
-    
-    for (int i = 0; i < linesCount; i++) free(lines[i]);
+
+    //for (int i = 0; i < linesCount; i++) free(lines[i]);
     free(lines);
     free(funcLines);
-    
+
     // At this point, all raylib data has been parsed!
     //-----------------------------------------------------------------------------------------
     // structs[] -> We have all the structs decomposed into pieces for further analysis
     // enums[]   -> We have all the enums decomposed into pieces for further analysis
     // funcs[]   -> We have all the functions decomposed into pieces for further analysis
-    
-    // Print structs info
-    switch (outputFormat)
-    {
-        case PlainText: {
-            printf("\nStructures found: %i\n\n", structCount);
-            for (int i = 0; i < structCount; i++)
-            {
-                printf("Struct %02i: %s (%i fields)\n", i + 1, structs[i].name, structs[i].fieldCount);
-                //printf("Description: %s\n", structs[i].desc);
-                for (int f = 0; f < structs[i].fieldCount; f++) printf("  Fields %i: %s %s %s\n", f + 1, structs[i].fieldType[f], structs[i].fieldName[f], structs[i].fieldDesc[f]);
-            }
 
-            // Print enums info
-            printf("\nEnums found: %i\n\n", enumCount);
-            for (int i = 0; i < enumCount; i++)
-            {
-                printf("Enum %02i: %s (%i values)\n", i + 1, enums[i].name, enums[i].valueCount);
-                //printf("Description: %s\n", enums[i].desc);
-                for (int e = 0; e < enums[i].valueCount; e++) printf("  Value %s: %i\n", enums[i].valueName[e], enums[i].valueInteger[e]);
-            }
+    // Process input file to output
+    if (outFileName[0] == '\0') MemoryCopy(outFileName, "raylib_api.txt\0", 15);
 
-            // Print function info
-            printf("\nFunctions found: %i\n\n", funcCount);
-            for (int i = 0; i < funcCount; i++)
-            {
-                printf("Function %03i: %s() (%i input parameters)\n", i + 1, funcs[i].name, funcs[i].paramCount);
-                printf("  Description: %s\n", funcs[i].desc);
-                printf("  Return type: %s\n", funcs[i].retType);
-                for (int p = 0; p < funcs[i].paramCount; p++) printf("  Param %i: %s (type: %s)\n", p + 1, funcs[i].paramName[p], funcs[i].paramType[p]);
-                if (funcs[i].paramCount == 0) printf("  No input parameters\n");
-            }
-        } break;
-        case JSON: {
-            printf("{\n");
-            printf("  \"structs\": [\n");
-            for (int i = 0; i < structCount; i++)
-            {
-                printf("    {\n");
-                printf("      \"name\": \"%s\",\n", structs[i].name);
-                printf("      \"description\": \"%s\",\n", structs[i].desc);
-                printf("      \"fields\": [\n");
-                for (int f = 0; f < structs[i].fieldCount; f++)
-                {
-                    printf("        {\n");
-                    printf("          \"name\": \"%s\",\n", structs[i].fieldName[f]),
-                    printf("          \"type\": \"%s\",\n", structs[i].fieldType[f]),
-                    printf("          \"description\": \"%s\"\n", structs[i].fieldDesc[f] + 3),
-                    printf("        }");
-                    if (f < structs[i].fieldCount - 1)
-                        printf(",\n");
-                    else
-                        printf("\n");
-                }
-                printf("      ]\n");
-                printf("    }");
-                if (i < structCount - 1)
-                    printf(",\n");
-                else
-                    printf("\n");
-            }
-            printf("  ],\n");
-
-            // Print enums info
-            printf("  \"enums\": [\n");
-            for (int i = 0; i < enumCount; i++)
-            {
-                printf("    {\n");
-                printf("      \"name\": \"%s\",\n", enums[i].name);
-                printf("      \"description\": \"%s\",\n", enums[i].desc + 3);
-                printf("      \"values\": [\n");
-                for (int e = 0; e < enums[i].valueCount; e++)
-                {
-                    printf("        {\n");
-                    printf("          \"name\": \"%s\",\n", enums[i].valueName[e]),
-                    printf("          \"value\": %i,\n", enums[i].valueInteger[e]),
-                    printf("          \"description\": \"%s\"\n", enums[i].valueDesc[e] + 3),
-                    printf("        }");
-                    if (e < enums[i].valueCount - 1)
-                        printf(",\n");
-                    else
-                        printf("\n");
-                }
-                printf("      ]\n");
-                printf("    }");
-                if (i < enumCount - 1)
-                    printf(",\n");
-                else
-                    printf("\n");
-            }
-            printf("  ],\n");
-
-            // Print function info
-            printf("  \"functions\": [\n");
-            for (int i = 0; i < funcCount; i++)
-            {
-                printf("    {\n");
-                printf("      \"name\": \"%s\",\n", funcs[i].name);
-                printf("      \"description\": \"%s\",\n", CharReplace(funcs[i].desc, '\\', ' ') + 3);
-                printf("      \"returnType\": \"%s\"", funcs[i].retType);
+    printf("\nInput file:       %s", inFileName);
+    printf("\nOutput file:      %s", outFileName);
+    if (outputFormat == DEFAULT) printf("\nOutput format:    DEFAULT\n\n");
+    else if (outputFormat == JSON) printf("\nOutput format:    JSON\n\n");
+    else if (outputFormat == XML) printf("\nOutput format:    XML\n\n");
 
-                if (funcs[i].paramCount == 0)
-                    printf("\n");
-                else
-                {
-                    printf(",\n      \"params\": {\n");
-                    for (int p = 0; p < funcs[i].paramCount; p++)
-                    {
-                        printf("        \"%s\": \"%s\"", funcs[i].paramName[p], funcs[i].paramType[p]);
-                        if (p < funcs[i].paramCount - 1)
-                            printf(",\n");
-                        else
-                            printf("\n");
-                    }
-                    printf("      }\n");
-                }
-                printf("    }");
+    ExportParsedData(outFileName, outputFormat);
 
-                if (i < funcCount - 1)
-                    printf(",\n");
-                else
-                    printf("\n");
-            }
-            printf("  ]\n");
-            printf("}\n");
-        } break;
-    }
-    
     free(funcs);
     free(structs);
     free(enums);
@@ -616,10 +511,84 @@ int main(int argc, char* argv[])
 //----------------------------------------------------------------------------------
 // Module Functions Definition
 //----------------------------------------------------------------------------------
+// Show command line usage info
+static void ShowCommandLineInfo(void)
+{
+    printf("\n//////////////////////////////////////////////////////////////////////////////////\n");
+    printf("//                                                                              //\n");
+    printf("// raylib API parser                                                            //\n");
+    printf("//                                                                              //\n");
+    printf("// more info and bugs-report: github.com/raysan5/raylib/parser                  //\n");
+    printf("//                                                                              //\n");
+    printf("// Copyright (c) 2021 Ramon Santamaria (@raysan5)                               //\n");
+    printf("//                                                                              //\n");
+    printf("//////////////////////////////////////////////////////////////////////////////////\n\n");
+
+    printf("USAGE:\n\n");
+    printf("    > raylib_parser [--help] [--input <filename.h>] [--output <filename.ext>] [--format <type>]\n");
+
+    printf("\nOPTIONS:\n\n");
+    printf("    -h, --help                      : Show tool version and command line usage help\n\n");
+    printf("    -i, --input <filename.h>        : Define input header file to parse.\n");
+    printf("                                      NOTE: If not specified, defaults to: raylib.h\n\n");
+    printf("    -o, --output <filename.ext>     : Define output file and format.\n");
+    printf("                                      Supported extensions: .txt, .json, .xml, .h\n");
+    printf("                                      NOTE: If not specified, defaults to: raylib_api.txt\n\n");
+    printf("    -f, --format <type>             : Define output format for parser data.\n");
+    printf("                                      Supported types: DEFAULT, JSON, XML\n\n");
+
+    printf("\nEXAMPLES:\n\n");
+    printf("    > raylib_parser --input raylib.h --output api.json\n");
+    printf("        Process <raylib.h> to generate <api.json>\n\n");
+    printf("    > raylib_parser --output raylib_data.info --format XML\n");
+    printf("        Process <raylib.h> to generate <raylib_data.info> as XML text data\n\n");
+}
+
+// Process command line arguments
+static void ProcessCommandLine(int argc, char *argv[])
+{
+    for (int i = 1; i < argc; i++)
+    {
+        if (IsTextEqual(argv[i], "-h", 2) || IsTextEqual(argv[i], "--help", 6))
+        {
+            // Show info
+            ShowCommandLineInfo();
+        }
+        else if (IsTextEqual(argv[i], "-i", 2) || IsTextEqual(argv[i], "--input", 7))
+        {
+            // Check for valid argument and valid file extension
+            if (((i + 1) < argc) && (argv[i + 1][0] != '-'))
+            {
+                MemoryCopy(inFileName, argv[i + 1], TextLength(argv[i + 1])); // Read input filename
+                i++;
+            }
+            else printf("WARNING: No input file provided\n");
+        }
+        else if (IsTextEqual(argv[i], "-o", 2) || IsTextEqual(argv[i], "--output", 8))
+        {
+            if (((i + 1) < argc) && (argv[i + 1][0] != '-'))
+            {
+                MemoryCopy(outFileName, argv[i + 1], TextLength(argv[i + 1])); // Read output filename
+                i++;
+            }
+            else printf("WARNING: No output file provided\n");
+        }
+        else if (IsTextEqual(argv[i], "-f", 2) || IsTextEqual(argv[i], "--format", 8))
+        {
+            if (((i + 1) < argc) && (argv[i + 1][0] != '-'))
+            {
+                if (IsTextEqual(argv[i + 1], "DEFAULT\0", 8)) outputFormat = DEFAULT;
+                else if (IsTextEqual(argv[i + 1], "JSON\0", 5)) outputFormat = JSON;
+                else if (IsTextEqual(argv[i + 1], "XML\0", 4)) outputFormat = XML;
+            }
+            else printf("WARNING: No format parameters provided\n");
+        }
+    }
+}
 
 // Load text data from file, returns a '\0' terminated string
 // NOTE: text chars array should be freed manually
-char *LoadFileText(const char *fileName, int *length)
+static char *LoadFileText(const char *fileName, int *length)
 {
     char *text = NULL;
 
@@ -638,14 +607,17 @@ char *LoadFileText(const char *fileName, int *length)
 
             if (size > 0)
             {
-                *length = size;
-                
                 text = (char *)calloc((size + 1), sizeof(char));
                 unsigned int count = (unsigned int)fread(text, sizeof(char), size, file);
 
                 // WARNING: \r\n is converted to \n on reading, so,
                 // read bytes count gets reduced by the number of lines
-                if (count < (unsigned int)size) text = realloc(text, count + 1);
+                if (count < (unsigned int)size)
+                {
+                    text = realloc(text, count + 1);
+                    *length = count;
+                }
+                else *length = size;
 
                 // Zero-terminate the string
                 text[count] = '\0';
@@ -659,47 +631,45 @@ char *LoadFileText(const char *fileName, int *length)
 }
 
 // Get all lines from a text buffer (expecting lines ending with '\n')
-char **GetTextLines(const char *buffer, int length, int *linesCount)
+static char **GetTextLines(const char *buffer, int length, int *linesCount)
 {
-    //#define MAX_LINE_LENGTH     512
-    
     // Get the number of lines in the text
     int count = 0;
     for (int i = 0; i < length; i++) if (buffer[i] == '\n') count++;
 
-    //printf("Number of text lines in buffer: %i\n", count);
-    
+    printf("Number of text lines in buffer: %i\n", count);
+
     // Allocate as many pointers as lines
     char **lines = (char **)malloc(count*sizeof(char **));
-    
+
     char *bufferPtr = (char *)buffer;
-    
+
     for (int i = 0; (i < count) || (bufferPtr[0] != '\0'); i++)
     {
         lines[i] = (char *)calloc(MAX_LINE_LENGTH, sizeof(char));
-        
+
         // Remove line leading spaces
         // Find last index of space/tab character
         int index = 0;
         while ((bufferPtr[index] == ' ') || (bufferPtr[index] == '\t')) index++;
 
         int j = 0;
-        while (bufferPtr[index + j] != '\n') 
+        while (bufferPtr[index + j] != '\n')
         {
             lines[i][j] = bufferPtr[index + j];
             j++;
         }
-        
+
         bufferPtr += (index + j + 1);
     }
-    
+
     *linesCount = count;
     return lines;
 }
 
 // Get data type and name from a string containing both
 // NOTE: Useful to parse function parameters and struct fields
-void GetDataTypeAndName(const char *typeName, int typeNameLen, char *type, char *name)
+static void GetDataTypeAndName(const char *typeName, int typeNameLen, char *type, char *name)
 {
     for (int k = typeNameLen; k > 0; k--)
     {
@@ -719,8 +689,18 @@ void GetDataTypeAndName(const char *typeName, int typeNameLen, char *type, char
     }
 }
 
+// Get text length in bytes, check for \0 character
+static unsigned int TextLength(const char *text)
+{
+    unsigned int length = 0;
+
+    if (text != NULL) while (*text++) length++;
+
+    return length;
+}
+
 // Custom memcpy() to avoid <string.h>
-void MemoryCopy(void *dest, const void *src, unsigned int count)
+static void MemoryCopy(void *dest, const void *src, unsigned int count)
 {
     char *srcPtr = (char *)src;
     char *destPtr = (char *)dest;
@@ -729,13 +709,13 @@ void MemoryCopy(void *dest, const void *src, unsigned int count)
 }
 
 // Compare two text strings, requires number of characters to compare
-bool IsTextEqual(const char *text1, const char *text2, unsigned int count)
+static bool IsTextEqual(const char *text1, const char *text2, unsigned int count)
 {
     bool result = true;
-    
-    for (unsigned int i = 0; i < count; i++) 
+
+    for (unsigned int i = 0; i < count; i++)
     {
-        if (text1[i] != text2[i]) 
+        if (text1[i] != text2[i])
         {
             result = false;
             break;
@@ -746,7 +726,7 @@ bool IsTextEqual(const char *text1, const char *text2, unsigned int count)
 }
 
 // Search and replace a character within a string.
-char* CharReplace(char* text, char search, char replace)
+static char* CharReplace(char* text, char search, char replace)
 {
     for (int i = 0; text[i] != '\0'; i++)
         if (text[i] == search)
@@ -758,7 +738,7 @@ char* CharReplace(char* text, char search, char replace)
 // Replace text string
 // REQUIRES: strlen(), strstr(), strncpy(), strcpy() -> TODO: Replace by custom implementations!
 // WARNING: Returned buffer must be freed by the user (if return != NULL)
-char *TextReplace(char *text, const char *replace, const char *by)
+static char *TextReplace(char *text, const char *replace, const char *by)
 {
     // Sanity checks and initialization
     if (!text || !replace || !by) return NULL;
@@ -804,4 +784,206 @@ char *TextReplace(char *text, const char *replace, const char *by)
 
     return result;
 }
-*/
+*/
+
+// Export parsed data in desired format
+static void ExportParsedData(const char *fileName, int format)
+{
+    FILE *outFile = fopen(fileName, "wt");
+
+    switch (format)
+    {
+        case DEFAULT:
+        {
+            // Print structs info
+            fprintf(outFile, "\nStructures found: %i\n\n", structCount);
+            for (int i = 0; i < structCount; i++)
+            {
+                fprintf(outFile, "Struct %02i: %s (%i fields)\n", i + 1, structs[i].name, structs[i].fieldCount);
+                fprintf(outFile, "  Name: %s\n", structs[i].name);
+                fprintf(outFile, "  Description: %s\n", structs[i].desc + 3);
+                for (int f = 0; f < structs[i].fieldCount; f++) fprintf(outFile, "  Field[%i]: %s %s %s\n", f + 1, structs[i].fieldType[f], structs[i].fieldName[f], structs[i].fieldDesc[f]);
+            }
+
+            // Print enums info
+            fprintf(outFile, "\nEnums found: %i\n\n", enumCount);
+            for (int i = 0; i < enumCount; i++)
+            {
+                fprintf(outFile, "Enum %02i: %s (%i values)\n", i + 1, enums[i].name, enums[i].valueCount);
+                fprintf(outFile, "  Name: %s\n", enums[i].name);
+                fprintf(outFile, " Description: %s\n", enums[i].desc + 3);
+                for (int e = 0; e < enums[i].valueCount; e++) fprintf(outFile, "  Value[%s]: %i\n", enums[i].valueName[e], enums[i].valueInteger[e]);
+            }
+
+            // Print functions info
+            fprintf(outFile, "\nFunctions found: %i\n\n", funcCount);
+            for (int i = 0; i < funcCount; i++)
+            {
+                fprintf(outFile, "Function %03i: %s() (%i input parameters)\n", i + 1, funcs[i].name, funcs[i].paramCount);
+                fprintf(outFile, "  Name: %s\n", funcs[i].name);
+                fprintf(outFile, "  Return type: %s\n", funcs[i].retType);
+                fprintf(outFile, "  Description: %s\n", funcs[i].desc + 3);
+                for (int p = 0; p < funcs[i].paramCount; p++) fprintf(outFile, "  Param[%i]: %s (type: %s)\n", p + 1, funcs[i].paramName[p], funcs[i].paramType[p]);
+                if (funcs[i].paramCount == 0) fprintf(outFile, "  No input parameters\n");
+            }
+        } break;
+        case JSON:
+        {
+            fprintf(outFile, "{\n");
+
+            // Print structs info
+            fprintf(outFile, "  \"structs\": [\n");
+            for (int i = 0; i < structCount; i++)
+            {
+                fprintf(outFile, "    {\n");
+                fprintf(outFile, "      \"name\": \"%s\",\n", structs[i].name);
+                fprintf(outFile, "      \"description\": \"%s\",\n", structs[i].desc);
+                fprintf(outFile, "      \"fields\": [\n");
+                for (int f = 0; f < structs[i].fieldCount; f++)
+                {
+                    fprintf(outFile, "        {\n");
+                    fprintf(outFile, "          \"name\": \"%s\",\n", structs[i].fieldName[f]),
+                    fprintf(outFile, "          \"type\": \"%s\",\n", structs[i].fieldType[f]),
+                    fprintf(outFile, "          \"description\": \"%s\"\n", structs[i].fieldDesc[f] + 3),
+                    fprintf(outFile, "        }");
+                    if (f < structs[i].fieldCount - 1) fprintf(outFile, ",\n");
+                    else fprintf(outFile, "\n");
+                }
+                fprintf(outFile, "      ]\n");
+                fprintf(outFile, "    }");
+                if (i < structCount - 1) fprintf(outFile, ",\n");
+                else fprintf(outFile, "\n");
+            }
+            fprintf(outFile, "  ],\n");
+
+            // Print enums info
+            fprintf(outFile, "  \"enums\": [\n");
+            for (int i = 0; i < enumCount; i++)
+            {
+                fprintf(outFile, "    {\n");
+                fprintf(outFile, "      \"name\": \"%s\",\n", enums[i].name);
+                fprintf(outFile, "      \"description\": \"%s\",\n", enums[i].desc + 3);
+                fprintf(outFile, "      \"values\": [\n");
+                for (int e = 0; e < enums[i].valueCount; e++)
+                {
+                    fprintf(outFile, "        {\n");
+                    fprintf(outFile, "          \"name\": \"%s\",\n", enums[i].valueName[e]),
+                    fprintf(outFile, "          \"value\": %i,\n", enums[i].valueInteger[e]),
+                    fprintf(outFile, "          \"description\": \"%s\"\n", enums[i].valueDesc[e] + 3),
+                    fprintf(outFile, "        }");
+                    if (e < enums[i].valueCount - 1) fprintf(outFile, ",\n");
+                    else fprintf(outFile, "\n");
+                }
+                fprintf(outFile, "      ]\n");
+                fprintf(outFile, "    }");
+                if (i < enumCount - 1) fprintf(outFile, ",\n");
+                else fprintf(outFile, "\n");
+            }
+            fprintf(outFile, "  ],\n");
+
+            // Print functions info
+            fprintf(outFile, "  \"functions\": [\n");
+            for (int i = 0; i < funcCount; i++)
+            {
+                fprintf(outFile, "    {\n");
+                fprintf(outFile, "      \"name\": \"%s\",\n", funcs[i].name);
+                fprintf(outFile, "      \"description\": \"%s\",\n", CharReplace(funcs[i].desc, '\\', ' ') + 3);
+                fprintf(outFile, "      \"returnType\": \"%s\"", funcs[i].retType);
+
+                if (funcs[i].paramCount == 0) fprintf(outFile, "\n");
+                else
+                {
+                    fprintf(outFile, ",\n      \"params\": {\n");
+                    for (int p = 0; p < funcs[i].paramCount; p++)
+                    {
+                        fprintf(outFile, "        \"%s\": \"%s\"", funcs[i].paramName[p], funcs[i].paramType[p]);
+                        if (p < funcs[i].paramCount - 1) fprintf(outFile, ",\n");
+                        else fprintf(outFile, "\n");
+                    }
+                    fprintf(outFile, "      }\n");
+                }
+                fprintf(outFile, "    }");
+
+                if (i < funcCount - 1) fprintf(outFile, ",\n");
+                else fprintf(outFile, "\n");
+            }
+            fprintf(outFile, "  ]\n");
+            fprintf(outFile, "}\n");
+        } break;
+        case XML:
+        {
+            // XML format to export data:
+            /*
+            <?xml version="1.0" encoding="Windows-1252" ?>
+            <raylibAPI>
+                <Structs count="">
+                    <Struct name="" fieldCount="" desc="">
+                        <Field type="" name="" desc="">
+                        <Field type="" name="" desc="">
+                    </Struct>
+                <Structs>
+                <Enums count="">
+                    <Enum name="" valueCount="" desc="">
+                        <Value name="" integer="" desc="">
+                        <Value name="" integer="" desc="">
+                    </Enum>
+                </Enums>
+                <Functions count="">
+                    <Function name="" retType="" paramCount="" desc="">
+                        <Param type="" name="" desc="" />
+                        <Param type="" name="" desc="" />
+                    </Function>
+                </Functions>
+            </raylibAPI>
+            */
+
+            fprintf(outFile, "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\n");
+            fprintf(outFile, "<raylibAPI>\n");
+
+            // Print structs info
+            fprintf(outFile, "    <Structs count=\"%i\">\n", structCount);
+            for (int i = 0; i < structCount; i++)
+            {
+                fprintf(outFile, "        <Struct name=\"%s\" fieldCount=\"%i\" desc=\"%s\">\n", structs[i].name, structs[i].fieldCount, structs[i].desc + 3);
+                for (int f = 0; f < structs[i].fieldCount; f++)
+                {
+                    fprintf(outFile, "            <Field type=\"%s\" name=\"%s\" desc=\"%s\" />\n", structs[i].fieldType[f], structs[i].fieldName[f], structs[i].fieldDesc[f] + 3);
+                }
+                fprintf(outFile, "        </Struct>\n");
+            }
+            fprintf(outFile, "    </Structs>\n");
+
+            // Print enums info
+            fprintf(outFile, "    <Enums count=\"%i\">\n", enumCount);
+            for (int i = 0; i < enumCount; i++)
+            {
+                fprintf(outFile, "        <Enum name=\"%s\" valueCount=\"%i\" desc=\"%s\">\n", enums[i].name, enums[i].valueCount, enums[i].desc + 3);
+                for (int v = 0; v < enums[i].valueCount; v++)
+                {
+                    fprintf(outFile, "            <Value name=\"%s\" integer=\"%i\" desc=\"%s\" />\n", enums[i].valueName[v], enums[i].valueInteger[v], enums[i].valueDesc[v] + 3);
+                }
+                fprintf(outFile, "        </Enum>\n");
+            }
+            fprintf(outFile, "    </Enums>\n");
+
+            // Print functions info
+            fprintf(outFile, "    <Functions count=\"%i\">\n", funcCount);
+            for (int i = 0; i < funcCount; i++)
+            {
+                fprintf(outFile, "        <Function name=\"%s\" retType=\"%s\" paramCount=\"%i\" desc=\"%s\">\n", funcs[i].name, funcs[i].retType, funcs[i].paramCount, funcs[i].desc + 3);
+                for (int p = 0; p < funcs[i].paramCount; p++)
+                {
+                    fprintf(outFile, "            <Param type=\"%s\" name=\"%s\" desc=\"%s\" />\n", funcs[i].paramType[p], funcs[i].paramName[p], funcs[i].paramDesc[p] + 3);
+                }
+                fprintf(outFile, "        </Function>\n");
+            }
+            fprintf(outFile, "    </Functions>\n");
+
+            fprintf(outFile, "</raylibAPI>\n");
+
+        } break;
+        default: break;
+    }
+
+    fclose(outFile);
+}