Parser improvements (#2461)
* Fix parser function description detection Some functions in easings.h are defined on a single line and include a division which was mistaken for the start of the description. * Fix parser detection of macros including spaces * Add support for self-referencing structs to parser * Fix parser code style * Fix parser handling of multiple fields on one line * Increase parser MAX_STRUCT_FIELDS For internal rlglData State struct (internal structs are still not supported but this makes it less wrong). * Add description helper to parser * Regenerate parser output * Add cakkbacks to parser * Regenerate parser output * Refactor funcLines to be an array of line numbers It used to be an array of pointers into the text buffer but was changed to be an array of pointers to the lines. Now it is an array of line numbers like the others. * Fix code style * Move array size from name to type * Regenerate parser output
This commit is contained in:
parent
8cb03ef524
commit
df6caea25d
@ -471,7 +471,7 @@
|
|||||||
{
|
{
|
||||||
"type": "float *",
|
"type": "float *",
|
||||||
"name": "texcoords2",
|
"name": "texcoords2",
|
||||||
"description": "Vertex second texture coordinates (useful for lightmaps) (shader-location = 5)"
|
"description": "Vertex texture second coordinates (UV - 2 components per vertex) (shader-location = 5)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "float *",
|
"type": "float *",
|
||||||
@ -577,8 +577,8 @@
|
|||||||
"description": "Material maps array (MAX_MATERIAL_MAPS)"
|
"description": "Material maps array (MAX_MATERIAL_MAPS)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "float",
|
"type": "float[4]",
|
||||||
"name": "params[4]",
|
"name": "params",
|
||||||
"description": "Material generic parameters (if required)"
|
"description": "Material generic parameters (if required)"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -609,8 +609,8 @@
|
|||||||
"description": "Bone, skeletal animation bone",
|
"description": "Bone, skeletal animation bone",
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"type": "char",
|
"type": "char[32]",
|
||||||
"name": "name[32]",
|
"name": "name",
|
||||||
"description": "Bone name"
|
"description": "Bone name"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -909,13 +909,13 @@
|
|||||||
"description": "IPD (distance between pupils) in meters"
|
"description": "IPD (distance between pupils) in meters"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "float",
|
"type": "float[4]",
|
||||||
"name": "lensDistortionValues[4]",
|
"name": "lensDistortionValues",
|
||||||
"description": "Lens distortion constant parameters"
|
"description": "Lens distortion constant parameters"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "float",
|
"type": "float[4]",
|
||||||
"name": "chromaAbCorrection[4]",
|
"name": "chromaAbCorrection",
|
||||||
"description": "Chromatic aberration correction parameters"
|
"description": "Chromatic aberration correction parameters"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -925,43 +925,43 @@
|
|||||||
"description": "VrStereoConfig, VR stereo rendering configuration for simulator",
|
"description": "VrStereoConfig, VR stereo rendering configuration for simulator",
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"type": "Matrix",
|
"type": "Matrix[2]",
|
||||||
"name": "projection[2]",
|
"name": "projection",
|
||||||
"description": "VR projection matrices (per eye)"
|
"description": "VR projection matrices (per eye)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "Matrix",
|
"type": "Matrix[2]",
|
||||||
"name": "viewOffset[2]",
|
"name": "viewOffset",
|
||||||
"description": "VR view offset matrices (per eye)"
|
"description": "VR view offset matrices (per eye)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "float",
|
"type": "float[2]",
|
||||||
"name": "leftLensCenter[2]",
|
"name": "leftLensCenter",
|
||||||
"description": "VR left lens center"
|
"description": "VR left lens center"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "float",
|
"type": "float[2]",
|
||||||
"name": "rightLensCenter[2]",
|
"name": "rightLensCenter",
|
||||||
"description": "VR right lens center"
|
"description": "VR right lens center"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "float",
|
"type": "float[2]",
|
||||||
"name": "leftScreenCenter[2]",
|
"name": "leftScreenCenter",
|
||||||
"description": "VR left screen center"
|
"description": "VR left screen center"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "float",
|
"type": "float[2]",
|
||||||
"name": "rightScreenCenter[2]",
|
"name": "rightScreenCenter",
|
||||||
"description": "VR right screen center"
|
"description": "VR right screen center"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "float",
|
"type": "float[2]",
|
||||||
"name": "scale[2]",
|
"name": "scale",
|
||||||
"description": "VR distortion scale"
|
"description": "VR distortion scale"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "float",
|
"type": "float[2]",
|
||||||
"name": "scaleIn[2]",
|
"name": "scaleIn",
|
||||||
"description": "VR distortion scale in"
|
"description": "VR distortion scale in"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -4116,7 +4116,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "GetDirectoryFiles",
|
"name": "GetDirectoryFiles",
|
||||||
"description": "Get filenames in a directory path (memory should be freed)",
|
"description": "Get filenames in a directory path (memory must be freed)",
|
||||||
"returnType": "char **",
|
"returnType": "char **",
|
||||||
"params": [
|
"params": [
|
||||||
{
|
{
|
||||||
@ -4152,7 +4152,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "GetDroppedFiles",
|
"name": "GetDroppedFiles",
|
||||||
"description": "Get dropped files names (memory should be freed)",
|
"description": "Get dropped files names (memory must be freed)",
|
||||||
"returnType": "char **",
|
"returnType": "char **",
|
||||||
"params": [
|
"params": [
|
||||||
{
|
{
|
||||||
@ -4179,7 +4179,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "CompressData",
|
"name": "CompressData",
|
||||||
"description": "Compress data (DEFLATE algorithm)",
|
"description": "Compress data (DEFLATE algorithm), memory must be MemFree()",
|
||||||
"returnType": "unsigned char *",
|
"returnType": "unsigned char *",
|
||||||
"params": [
|
"params": [
|
||||||
{
|
{
|
||||||
@ -4198,7 +4198,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "DecompressData",
|
"name": "DecompressData",
|
||||||
"description": "Decompress data (DEFLATE algorithm)",
|
"description": "Decompress data (DEFLATE algorithm), memory must be MemFree()",
|
||||||
"returnType": "unsigned char *",
|
"returnType": "unsigned char *",
|
||||||
"params": [
|
"params": [
|
||||||
{
|
{
|
||||||
@ -4217,7 +4217,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "EncodeDataBase64",
|
"name": "EncodeDataBase64",
|
||||||
"description": "Encode data to Base64 string",
|
"description": "Encode data to Base64 string, memory must be MemFree()",
|
||||||
"returnType": "char *",
|
"returnType": "char *",
|
||||||
"params": [
|
"params": [
|
||||||
{
|
{
|
||||||
@ -4236,7 +4236,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "DecodeDataBase64",
|
"name": "DecodeDataBase64",
|
||||||
"description": "Decode Base64 string data",
|
"description": "Decode Base64 string data, memory must be MemFree()",
|
||||||
"returnType": "unsigned char *",
|
"returnType": "unsigned char *",
|
||||||
"params": [
|
"params": [
|
||||||
{
|
{
|
||||||
@ -10556,5 +10556,101 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"callbacks": [
|
||||||
|
{
|
||||||
|
"name": "TraceLogCallback",
|
||||||
|
"description": "Logging: Redirect trace log messages",
|
||||||
|
"returnType": "void",
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"type": "int",
|
||||||
|
"name": "logLevel"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "const char *",
|
||||||
|
"name": "text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "va_list",
|
||||||
|
"name": "args"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "LoadFileDataCallback",
|
||||||
|
"description": "FileIO: Load binary data",
|
||||||
|
"returnType": "unsigned char *",
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"type": "const char *",
|
||||||
|
"name": "fileName"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "unsigned int *",
|
||||||
|
"name": "bytesRead"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "SaveFileDataCallback",
|
||||||
|
"description": "FileIO: Save binary data",
|
||||||
|
"returnType": "bool",
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"type": "const char *",
|
||||||
|
"name": "fileName"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "void *",
|
||||||
|
"name": "data"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "unsigned int",
|
||||||
|
"name": "bytesToWrite"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "LoadFileTextCallback",
|
||||||
|
"description": "FileIO: Load text data",
|
||||||
|
"returnType": "char *",
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"type": "const char *",
|
||||||
|
"name": "fileName"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "SaveFileTextCallback",
|
||||||
|
"description": "FileIO: Save text data",
|
||||||
|
"returnType": "bool",
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"type": "const char *",
|
||||||
|
"name": "fileName"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "char *",
|
||||||
|
"name": "text"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "AudioCallback",
|
||||||
|
"description": "",
|
||||||
|
"returnType": "void",
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"type": "void *",
|
||||||
|
"name": "bufferData"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "unsigned int",
|
||||||
|
"name": "frames"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -471,7 +471,7 @@ return {
|
|||||||
{
|
{
|
||||||
type = "float *",
|
type = "float *",
|
||||||
name = "texcoords2",
|
name = "texcoords2",
|
||||||
description = "Vertex second texture coordinates (useful for lightmaps) (shader-location = 5)"
|
description = "Vertex texture second coordinates (UV - 2 components per vertex) (shader-location = 5)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type = "float *",
|
type = "float *",
|
||||||
@ -577,8 +577,8 @@ return {
|
|||||||
description = "Material maps array (MAX_MATERIAL_MAPS)"
|
description = "Material maps array (MAX_MATERIAL_MAPS)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type = "float",
|
type = "float[4]",
|
||||||
name = "params[4]",
|
name = "params",
|
||||||
description = "Material generic parameters (if required)"
|
description = "Material generic parameters (if required)"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -609,8 +609,8 @@ return {
|
|||||||
description = "Bone, skeletal animation bone",
|
description = "Bone, skeletal animation bone",
|
||||||
fields = {
|
fields = {
|
||||||
{
|
{
|
||||||
type = "char",
|
type = "char[32]",
|
||||||
name = "name[32]",
|
name = "name",
|
||||||
description = "Bone name"
|
description = "Bone name"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -909,13 +909,13 @@ return {
|
|||||||
description = "IPD (distance between pupils) in meters"
|
description = "IPD (distance between pupils) in meters"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type = "float",
|
type = "float[4]",
|
||||||
name = "lensDistortionValues[4]",
|
name = "lensDistortionValues",
|
||||||
description = "Lens distortion constant parameters"
|
description = "Lens distortion constant parameters"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type = "float",
|
type = "float[4]",
|
||||||
name = "chromaAbCorrection[4]",
|
name = "chromaAbCorrection",
|
||||||
description = "Chromatic aberration correction parameters"
|
description = "Chromatic aberration correction parameters"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -925,43 +925,43 @@ return {
|
|||||||
description = "VrStereoConfig, VR stereo rendering configuration for simulator",
|
description = "VrStereoConfig, VR stereo rendering configuration for simulator",
|
||||||
fields = {
|
fields = {
|
||||||
{
|
{
|
||||||
type = "Matrix",
|
type = "Matrix[2]",
|
||||||
name = "projection[2]",
|
name = "projection",
|
||||||
description = "VR projection matrices (per eye)"
|
description = "VR projection matrices (per eye)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type = "Matrix",
|
type = "Matrix[2]",
|
||||||
name = "viewOffset[2]",
|
name = "viewOffset",
|
||||||
description = "VR view offset matrices (per eye)"
|
description = "VR view offset matrices (per eye)"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type = "float",
|
type = "float[2]",
|
||||||
name = "leftLensCenter[2]",
|
name = "leftLensCenter",
|
||||||
description = "VR left lens center"
|
description = "VR left lens center"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type = "float",
|
type = "float[2]",
|
||||||
name = "rightLensCenter[2]",
|
name = "rightLensCenter",
|
||||||
description = "VR right lens center"
|
description = "VR right lens center"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type = "float",
|
type = "float[2]",
|
||||||
name = "leftScreenCenter[2]",
|
name = "leftScreenCenter",
|
||||||
description = "VR left screen center"
|
description = "VR left screen center"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type = "float",
|
type = "float[2]",
|
||||||
name = "rightScreenCenter[2]",
|
name = "rightScreenCenter",
|
||||||
description = "VR right screen center"
|
description = "VR right screen center"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type = "float",
|
type = "float[2]",
|
||||||
name = "scale[2]",
|
name = "scale",
|
||||||
description = "VR distortion scale"
|
description = "VR distortion scale"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type = "float",
|
type = "float[2]",
|
||||||
name = "scaleIn[2]",
|
name = "scaleIn",
|
||||||
description = "VR distortion scale in"
|
description = "VR distortion scale in"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3771,7 +3771,7 @@ return {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "GetDirectoryFiles",
|
name = "GetDirectoryFiles",
|
||||||
description = "Get filenames in a directory path (memory should be freed)",
|
description = "Get filenames in a directory path (memory must be freed)",
|
||||||
returnType = "char **",
|
returnType = "char **",
|
||||||
params = {
|
params = {
|
||||||
{type = "const char *", name = "dirPath"},
|
{type = "const char *", name = "dirPath"},
|
||||||
@ -3798,7 +3798,7 @@ return {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "GetDroppedFiles",
|
name = "GetDroppedFiles",
|
||||||
description = "Get dropped files names (memory should be freed)",
|
description = "Get dropped files names (memory must be freed)",
|
||||||
returnType = "char **",
|
returnType = "char **",
|
||||||
params = {
|
params = {
|
||||||
{type = "int *", name = "count"}
|
{type = "int *", name = "count"}
|
||||||
@ -3819,7 +3819,7 @@ return {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "CompressData",
|
name = "CompressData",
|
||||||
description = "Compress data (DEFLATE algorithm)",
|
description = "Compress data (DEFLATE algorithm), memory must be MemFree()",
|
||||||
returnType = "unsigned char *",
|
returnType = "unsigned char *",
|
||||||
params = {
|
params = {
|
||||||
{type = "const unsigned char *", name = "data"},
|
{type = "const unsigned char *", name = "data"},
|
||||||
@ -3829,7 +3829,7 @@ return {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "DecompressData",
|
name = "DecompressData",
|
||||||
description = "Decompress data (DEFLATE algorithm)",
|
description = "Decompress data (DEFLATE algorithm), memory must be MemFree()",
|
||||||
returnType = "unsigned char *",
|
returnType = "unsigned char *",
|
||||||
params = {
|
params = {
|
||||||
{type = "const unsigned char *", name = "compData"},
|
{type = "const unsigned char *", name = "compData"},
|
||||||
@ -3839,7 +3839,7 @@ return {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "EncodeDataBase64",
|
name = "EncodeDataBase64",
|
||||||
description = "Encode data to Base64 string",
|
description = "Encode data to Base64 string, memory must be MemFree()",
|
||||||
returnType = "char *",
|
returnType = "char *",
|
||||||
params = {
|
params = {
|
||||||
{type = "const unsigned char *", name = "data"},
|
{type = "const unsigned char *", name = "data"},
|
||||||
@ -3849,7 +3849,7 @@ return {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
name = "DecodeDataBase64",
|
name = "DecodeDataBase64",
|
||||||
description = "Decode Base64 string data",
|
description = "Decode Base64 string data, memory must be MemFree()",
|
||||||
returnType = "unsigned char *",
|
returnType = "unsigned char *",
|
||||||
params = {
|
params = {
|
||||||
{type = "const unsigned char *", name = "data"},
|
{type = "const unsigned char *", name = "data"},
|
||||||
@ -7322,5 +7322,62 @@ return {
|
|||||||
{type = "AudioCallback", name = "processor"}
|
{type = "AudioCallback", name = "processor"}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
callbacks = {
|
||||||
|
{
|
||||||
|
name = "TraceLogCallback",
|
||||||
|
description = "Logging: Redirect trace log messages",
|
||||||
|
returnType = "void",
|
||||||
|
params = {
|
||||||
|
{type = "int", name = "logLevel"},
|
||||||
|
{type = "const char *", name = "text"},
|
||||||
|
{type = "va_list", name = "args"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "LoadFileDataCallback",
|
||||||
|
description = "FileIO: Load binary data",
|
||||||
|
returnType = "unsigned char *",
|
||||||
|
params = {
|
||||||
|
{type = "const char *", name = "fileName"},
|
||||||
|
{type = "unsigned int *", name = "bytesRead"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "SaveFileDataCallback",
|
||||||
|
description = "FileIO: Save binary data",
|
||||||
|
returnType = "bool",
|
||||||
|
params = {
|
||||||
|
{type = "const char *", name = "fileName"},
|
||||||
|
{type = "void *", name = "data"},
|
||||||
|
{type = "unsigned int", name = "bytesToWrite"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "LoadFileTextCallback",
|
||||||
|
description = "FileIO: Load text data",
|
||||||
|
returnType = "char *",
|
||||||
|
params = {
|
||||||
|
{type = "const char *", name = "fileName"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "SaveFileTextCallback",
|
||||||
|
description = "FileIO: Save text data",
|
||||||
|
returnType = "bool",
|
||||||
|
params = {
|
||||||
|
{type = "const char *", name = "fileName"},
|
||||||
|
{type = "char *", name = "text"}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name = "AudioCallback",
|
||||||
|
description = "",
|
||||||
|
returnType = "void",
|
||||||
|
params = {
|
||||||
|
{type = "void *", name = "bufferData"},
|
||||||
|
{type = "unsigned int", name = "frames"}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -122,7 +122,7 @@ Struct 15: Mesh (15 fields)
|
|||||||
Field[2]: int triangleCount // Number of triangles stored (indexed or not)
|
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[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[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[5]: float * texcoords2 // Vertex texture second coordinates (UV - 2 components per vertex) (shader-location = 5)
|
||||||
Field[6]: float * normals // Vertex normals (XYZ - 3 components per vertex) (shader-location = 2)
|
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[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[8]: unsigned char * colors // Vertex colors (RGBA - 4 components per vertex) (shader-location = 3)
|
||||||
@ -149,7 +149,7 @@ Struct 18: Material (3 fields)
|
|||||||
Description: Material, includes shader and maps
|
Description: Material, includes shader and maps
|
||||||
Field[1]: Shader shader // Material shader
|
Field[1]: Shader shader // Material shader
|
||||||
Field[2]: MaterialMap * maps // Material maps array (MAX_MATERIAL_MAPS)
|
Field[2]: MaterialMap * maps // Material maps array (MAX_MATERIAL_MAPS)
|
||||||
Field[3]: float params[4] // Material generic parameters (if required)
|
Field[3]: float[4] params // Material generic parameters (if required)
|
||||||
Struct 19: Transform (3 fields)
|
Struct 19: Transform (3 fields)
|
||||||
Name: Transform
|
Name: Transform
|
||||||
Description: Transform, vectex transformation data
|
Description: Transform, vectex transformation data
|
||||||
@ -159,7 +159,7 @@ Struct 19: Transform (3 fields)
|
|||||||
Struct 20: BoneInfo (2 fields)
|
Struct 20: BoneInfo (2 fields)
|
||||||
Name: BoneInfo
|
Name: BoneInfo
|
||||||
Description: Bone, skeletal animation bone
|
Description: Bone, skeletal animation bone
|
||||||
Field[1]: char name[32] // Bone name
|
Field[1]: char[32] name // Bone name
|
||||||
Field[2]: int parent // Bone parent
|
Field[2]: int parent // Bone parent
|
||||||
Struct 21: Model (9 fields)
|
Struct 21: Model (9 fields)
|
||||||
Name: Model
|
Name: Model
|
||||||
@ -237,19 +237,19 @@ Struct 30: VrDeviceInfo (10 fields)
|
|||||||
Field[6]: float eyeToScreenDistance // Distance between eye and display in meters
|
Field[6]: float eyeToScreenDistance // Distance between eye and display in meters
|
||||||
Field[7]: float lensSeparationDistance // Lens separation distance in meters
|
Field[7]: float lensSeparationDistance // Lens separation distance in meters
|
||||||
Field[8]: float interpupillaryDistance // IPD (distance between pupils) in meters
|
Field[8]: float interpupillaryDistance // IPD (distance between pupils) in meters
|
||||||
Field[9]: float lensDistortionValues[4] // Lens distortion constant parameters
|
Field[9]: float[4] lensDistortionValues // Lens distortion constant parameters
|
||||||
Field[10]: float chromaAbCorrection[4] // Chromatic aberration correction parameters
|
Field[10]: float[4] chromaAbCorrection // Chromatic aberration correction parameters
|
||||||
Struct 31: VrStereoConfig (8 fields)
|
Struct 31: VrStereoConfig (8 fields)
|
||||||
Name: VrStereoConfig
|
Name: VrStereoConfig
|
||||||
Description: VrStereoConfig, VR stereo rendering configuration for simulator
|
Description: VrStereoConfig, VR stereo rendering configuration for simulator
|
||||||
Field[1]: Matrix projection[2] // VR projection matrices (per eye)
|
Field[1]: Matrix[2] projection // VR projection matrices (per eye)
|
||||||
Field[2]: Matrix viewOffset[2] // VR view offset matrices (per eye)
|
Field[2]: Matrix[2] viewOffset // VR view offset matrices (per eye)
|
||||||
Field[3]: float leftLensCenter[2] // VR left lens center
|
Field[3]: float[2] leftLensCenter // VR left lens center
|
||||||
Field[4]: float rightLensCenter[2] // VR right lens center
|
Field[4]: float[2] rightLensCenter // VR right lens center
|
||||||
Field[5]: float leftScreenCenter[2] // VR left screen center
|
Field[5]: float[2] leftScreenCenter // VR left screen center
|
||||||
Field[6]: float rightScreenCenter[2] // VR right screen center
|
Field[6]: float[2] rightScreenCenter // VR right screen center
|
||||||
Field[7]: float scale[2] // VR distortion scale
|
Field[7]: float[2] scale // VR distortion scale
|
||||||
Field[8]: float scaleIn[2] // VR distortion scale in
|
Field[8]: float[2] scaleIn // VR distortion scale in
|
||||||
|
|
||||||
Aliases found: 5
|
Aliases found: 5
|
||||||
|
|
||||||
@ -1281,7 +1281,7 @@ Function 121: GetApplicationDirectory() (0 input parameters)
|
|||||||
Function 122: GetDirectoryFiles() (2 input parameters)
|
Function 122: GetDirectoryFiles() (2 input parameters)
|
||||||
Name: GetDirectoryFiles
|
Name: GetDirectoryFiles
|
||||||
Return type: char **
|
Return type: char **
|
||||||
Description: Get filenames in a directory path (memory should be freed)
|
Description: Get filenames in a directory path (memory must be freed)
|
||||||
Param[1]: dirPath (type: const char *)
|
Param[1]: dirPath (type: const char *)
|
||||||
Param[2]: count (type: int *)
|
Param[2]: count (type: int *)
|
||||||
Function 123: ClearDirectoryFiles() (0 input parameters)
|
Function 123: ClearDirectoryFiles() (0 input parameters)
|
||||||
@ -1302,7 +1302,7 @@ Function 125: IsFileDropped() (0 input parameters)
|
|||||||
Function 126: GetDroppedFiles() (1 input parameters)
|
Function 126: GetDroppedFiles() (1 input parameters)
|
||||||
Name: GetDroppedFiles
|
Name: GetDroppedFiles
|
||||||
Return type: char **
|
Return type: char **
|
||||||
Description: Get dropped files names (memory should be freed)
|
Description: Get dropped files names (memory must be freed)
|
||||||
Param[1]: count (type: int *)
|
Param[1]: count (type: int *)
|
||||||
Function 127: ClearDroppedFiles() (0 input parameters)
|
Function 127: ClearDroppedFiles() (0 input parameters)
|
||||||
Name: ClearDroppedFiles
|
Name: ClearDroppedFiles
|
||||||
@ -1317,28 +1317,28 @@ Function 128: GetFileModTime() (1 input parameters)
|
|||||||
Function 129: CompressData() (3 input parameters)
|
Function 129: CompressData() (3 input parameters)
|
||||||
Name: CompressData
|
Name: CompressData
|
||||||
Return type: unsigned char *
|
Return type: unsigned char *
|
||||||
Description: Compress data (DEFLATE algorithm)
|
Description: Compress data (DEFLATE algorithm), memory must be MemFree()
|
||||||
Param[1]: data (type: const unsigned char *)
|
Param[1]: data (type: const unsigned char *)
|
||||||
Param[2]: dataSize (type: int)
|
Param[2]: dataSize (type: int)
|
||||||
Param[3]: compDataSize (type: int *)
|
Param[3]: compDataSize (type: int *)
|
||||||
Function 130: DecompressData() (3 input parameters)
|
Function 130: DecompressData() (3 input parameters)
|
||||||
Name: DecompressData
|
Name: DecompressData
|
||||||
Return type: unsigned char *
|
Return type: unsigned char *
|
||||||
Description: Decompress data (DEFLATE algorithm)
|
Description: Decompress data (DEFLATE algorithm), memory must be MemFree()
|
||||||
Param[1]: compData (type: const unsigned char *)
|
Param[1]: compData (type: const unsigned char *)
|
||||||
Param[2]: compDataSize (type: int)
|
Param[2]: compDataSize (type: int)
|
||||||
Param[3]: dataSize (type: int *)
|
Param[3]: dataSize (type: int *)
|
||||||
Function 131: EncodeDataBase64() (3 input parameters)
|
Function 131: EncodeDataBase64() (3 input parameters)
|
||||||
Name: EncodeDataBase64
|
Name: EncodeDataBase64
|
||||||
Return type: char *
|
Return type: char *
|
||||||
Description: Encode data to Base64 string
|
Description: Encode data to Base64 string, memory must be MemFree()
|
||||||
Param[1]: data (type: const unsigned char *)
|
Param[1]: data (type: const unsigned char *)
|
||||||
Param[2]: dataSize (type: int)
|
Param[2]: dataSize (type: int)
|
||||||
Param[3]: outputSize (type: int *)
|
Param[3]: outputSize (type: int *)
|
||||||
Function 132: DecodeDataBase64() (2 input parameters)
|
Function 132: DecodeDataBase64() (2 input parameters)
|
||||||
Name: DecodeDataBase64
|
Name: DecodeDataBase64
|
||||||
Return type: unsigned char *
|
Return type: unsigned char *
|
||||||
Description: Decode Base64 string data
|
Description: Decode Base64 string data, memory must be MemFree()
|
||||||
Param[1]: data (type: const unsigned char *)
|
Param[1]: data (type: const unsigned char *)
|
||||||
Param[2]: outputSize (type: int *)
|
Param[2]: outputSize (type: int *)
|
||||||
Function 133: SaveStorageValue() (2 input parameters)
|
Function 133: SaveStorageValue() (2 input parameters)
|
||||||
@ -3782,6 +3782,46 @@ Function 499: DetachAudioStreamProcessor() (2 input parameters)
|
|||||||
Param[1]: stream (type: AudioStream)
|
Param[1]: stream (type: AudioStream)
|
||||||
Param[2]: processor (type: AudioCallback)
|
Param[2]: processor (type: AudioCallback)
|
||||||
|
|
||||||
|
Callbacks found: 6
|
||||||
|
|
||||||
|
Callback 001: TraceLogCallback() (3 input parameters)
|
||||||
|
Name: TraceLogCallback
|
||||||
|
Return type: void
|
||||||
|
Description: Logging: Redirect trace log messages
|
||||||
|
Param[1]: logLevel (type: int)
|
||||||
|
Param[2]: text (type: const char *)
|
||||||
|
Param[3]: args (type: va_list)
|
||||||
|
Callback 002: LoadFileDataCallback() (2 input parameters)
|
||||||
|
Name: LoadFileDataCallback
|
||||||
|
Return type: unsigned char *
|
||||||
|
Description: FileIO: Load binary data
|
||||||
|
Param[1]: fileName (type: const char *)
|
||||||
|
Param[2]: bytesRead (type: unsigned int *)
|
||||||
|
Callback 003: SaveFileDataCallback() (3 input parameters)
|
||||||
|
Name: SaveFileDataCallback
|
||||||
|
Return type: bool
|
||||||
|
Description: FileIO: Save binary data
|
||||||
|
Param[1]: fileName (type: const char *)
|
||||||
|
Param[2]: data (type: void *)
|
||||||
|
Param[3]: bytesToWrite (type: unsigned int)
|
||||||
|
Callback 004: LoadFileTextCallback() (1 input parameters)
|
||||||
|
Name: LoadFileTextCallback
|
||||||
|
Return type: char *
|
||||||
|
Description: FileIO: Load text data
|
||||||
|
Param[1]: fileName (type: const char *)
|
||||||
|
Callback 005: SaveFileTextCallback() (2 input parameters)
|
||||||
|
Name: SaveFileTextCallback
|
||||||
|
Return type: bool
|
||||||
|
Description: FileIO: Save text data
|
||||||
|
Param[1]: fileName (type: const char *)
|
||||||
|
Param[2]: text (type: char *)
|
||||||
|
Callback 006: AudioCallback() (2 input parameters)
|
||||||
|
Name: AudioCallback
|
||||||
|
Return type: void
|
||||||
|
Description:
|
||||||
|
Param[1]: bufferData (type: void *)
|
||||||
|
Param[2]: frames (type: unsigned int)
|
||||||
|
|
||||||
Defines found: 52
|
Defines found: 52
|
||||||
|
|
||||||
Define 001: RAYLIB_H
|
Define 001: RAYLIB_H
|
||||||
|
@ -106,7 +106,7 @@
|
|||||||
<Field type="int" name="triangleCount" desc="Number of triangles stored (indexed or not)" />
|
<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="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="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="texcoords2" desc="Vertex texture second coordinates (UV - 2 components per vertex) (shader-location = 5)" />
|
||||||
<Field type="float *" name="normals" desc="Vertex normals (XYZ - 3 components per vertex) (shader-location = 2)" />
|
<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="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 char *" name="colors" desc="Vertex colors (RGBA - 4 components per vertex) (shader-location = 3)" />
|
||||||
@ -130,7 +130,7 @@
|
|||||||
<Struct name="Material" fieldCount="3" desc="Material, includes shader and maps">
|
<Struct name="Material" fieldCount="3" desc="Material, includes shader and maps">
|
||||||
<Field type="Shader" name="shader" desc="Material shader" />
|
<Field type="Shader" name="shader" desc="Material shader" />
|
||||||
<Field type="MaterialMap *" name="maps" desc="Material maps array (MAX_MATERIAL_MAPS)" />
|
<Field type="MaterialMap *" name="maps" desc="Material maps array (MAX_MATERIAL_MAPS)" />
|
||||||
<Field type="float" name="params[4]" desc="Material generic parameters (if required)" />
|
<Field type="float[4]" name="params" desc="Material generic parameters (if required)" />
|
||||||
</Struct>
|
</Struct>
|
||||||
<Struct name="Transform" fieldCount="3" desc="Transform, vectex transformation data">
|
<Struct name="Transform" fieldCount="3" desc="Transform, vectex transformation data">
|
||||||
<Field type="Vector3" name="translation" desc="Translation" />
|
<Field type="Vector3" name="translation" desc="Translation" />
|
||||||
@ -138,7 +138,7 @@
|
|||||||
<Field type="Vector3" name="scale" desc="Scale" />
|
<Field type="Vector3" name="scale" desc="Scale" />
|
||||||
</Struct>
|
</Struct>
|
||||||
<Struct name="BoneInfo" fieldCount="2" desc="Bone, skeletal animation bone">
|
<Struct name="BoneInfo" fieldCount="2" desc="Bone, skeletal animation bone">
|
||||||
<Field type="char" name="name[32]" desc="Bone name" />
|
<Field type="char[32]" name="name" desc="Bone name" />
|
||||||
<Field type="int" name="parent" desc="Bone parent" />
|
<Field type="int" name="parent" desc="Bone parent" />
|
||||||
</Struct>
|
</Struct>
|
||||||
<Struct name="Model" fieldCount="9" desc="Model, meshes, materials and animation data">
|
<Struct name="Model" fieldCount="9" desc="Model, meshes, materials and animation data">
|
||||||
@ -206,18 +206,18 @@
|
|||||||
<Field type="float" name="eyeToScreenDistance" desc="Distance between eye and display 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="lensSeparationDistance" desc="Lens separation distance in meters" />
|
||||||
<Field type="float" name="interpupillaryDistance" desc="IPD (distance between pupils) 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[4]" name="lensDistortionValues" desc="Lens distortion constant parameters" />
|
||||||
<Field type="float" name="chromaAbCorrection[4]" desc="Chromatic aberration correction parameters" />
|
<Field type="float[4]" name="chromaAbCorrection" desc="Chromatic aberration correction parameters" />
|
||||||
</Struct>
|
</Struct>
|
||||||
<Struct name="VrStereoConfig" fieldCount="8" desc="VrStereoConfig, VR stereo rendering configuration for simulator">
|
<Struct name="VrStereoConfig" fieldCount="8" desc="VrStereoConfig, VR stereo rendering configuration for simulator">
|
||||||
<Field type="Matrix" name="projection[2]" desc="VR projection matrices (per eye)" />
|
<Field type="Matrix[2]" name="projection" desc="VR projection matrices (per eye)" />
|
||||||
<Field type="Matrix" name="viewOffset[2]" desc="VR view offset matrices (per eye)" />
|
<Field type="Matrix[2]" name="viewOffset" desc="VR view offset matrices (per eye)" />
|
||||||
<Field type="float" name="leftLensCenter[2]" desc="VR left lens center" />
|
<Field type="float[2]" name="leftLensCenter" desc="VR left lens center" />
|
||||||
<Field type="float" name="rightLensCenter[2]" desc="VR right lens center" />
|
<Field type="float[2]" name="rightLensCenter" desc="VR right lens center" />
|
||||||
<Field type="float" name="leftScreenCenter[2]" desc="VR left screen center" />
|
<Field type="float[2]" name="leftScreenCenter" desc="VR left screen center" />
|
||||||
<Field type="float" name="rightScreenCenter[2]" desc="VR right screen center" />
|
<Field type="float[2]" name="rightScreenCenter" desc="VR right screen center" />
|
||||||
<Field type="float" name="scale[2]" desc="VR distortion scale" />
|
<Field type="float[2]" name="scale" desc="VR distortion scale" />
|
||||||
<Field type="float" name="scaleIn[2]" desc="VR distortion scale in" />
|
<Field type="float[2]" name="scaleIn" desc="VR distortion scale in" />
|
||||||
</Struct>
|
</Struct>
|
||||||
</Structs>
|
</Structs>
|
||||||
<Aliases count="5">
|
<Aliases count="5">
|
||||||
@ -975,7 +975,7 @@
|
|||||||
</Function>
|
</Function>
|
||||||
<Function name="GetApplicationDirectory" retType="const char *" paramCount="0" desc="Get the directory if the running application (uses static string)">
|
<Function name="GetApplicationDirectory" retType="const char *" paramCount="0" desc="Get the directory if the running application (uses static string)">
|
||||||
</Function>
|
</Function>
|
||||||
<Function name="GetDirectoryFiles" retType="char **" paramCount="2" desc="Get filenames in a directory path (memory should be freed)">
|
<Function name="GetDirectoryFiles" retType="char **" paramCount="2" desc="Get filenames in a directory path (memory must be freed)">
|
||||||
<Param type="const char *" name="dirPath" desc="" />
|
<Param type="const char *" name="dirPath" desc="" />
|
||||||
<Param type="int *" name="count" desc="" />
|
<Param type="int *" name="count" desc="" />
|
||||||
</Function>
|
</Function>
|
||||||
@ -986,7 +986,7 @@
|
|||||||
</Function>
|
</Function>
|
||||||
<Function name="IsFileDropped" retType="bool" paramCount="0" desc="Check if a file has been dropped into window">
|
<Function name="IsFileDropped" retType="bool" paramCount="0" desc="Check if a file has been dropped into window">
|
||||||
</Function>
|
</Function>
|
||||||
<Function name="GetDroppedFiles" retType="char **" paramCount="1" desc="Get dropped files names (memory should be freed)">
|
<Function name="GetDroppedFiles" retType="char **" paramCount="1" desc="Get dropped files names (memory must be freed)">
|
||||||
<Param type="int *" name="count" desc="" />
|
<Param type="int *" name="count" desc="" />
|
||||||
</Function>
|
</Function>
|
||||||
<Function name="ClearDroppedFiles" retType="void" paramCount="0" desc="Clear dropped files paths buffer (free memory)">
|
<Function name="ClearDroppedFiles" retType="void" paramCount="0" desc="Clear dropped files paths buffer (free memory)">
|
||||||
@ -994,22 +994,22 @@
|
|||||||
<Function name="GetFileModTime" retType="long" paramCount="1" desc="Get file modification time (last write time)">
|
<Function name="GetFileModTime" retType="long" paramCount="1" desc="Get file modification time (last write time)">
|
||||||
<Param type="const char *" name="fileName" desc="" />
|
<Param type="const char *" name="fileName" desc="" />
|
||||||
</Function>
|
</Function>
|
||||||
<Function name="CompressData" retType="unsigned char *" paramCount="3" desc="Compress data (DEFLATE algorithm)">
|
<Function name="CompressData" retType="unsigned char *" paramCount="3" desc="Compress data (DEFLATE algorithm), memory must be MemFree()">
|
||||||
<Param type="const unsigned char *" name="data" desc="" />
|
<Param type="const unsigned char *" name="data" desc="" />
|
||||||
<Param type="int" name="dataSize" desc="" />
|
<Param type="int" name="dataSize" desc="" />
|
||||||
<Param type="int *" name="compDataSize" desc="" />
|
<Param type="int *" name="compDataSize" desc="" />
|
||||||
</Function>
|
</Function>
|
||||||
<Function name="DecompressData" retType="unsigned char *" paramCount="3" desc="Decompress data (DEFLATE algorithm)">
|
<Function name="DecompressData" retType="unsigned char *" paramCount="3" desc="Decompress data (DEFLATE algorithm), memory must be MemFree()">
|
||||||
<Param type="const unsigned char *" name="compData" desc="" />
|
<Param type="const unsigned char *" name="compData" desc="" />
|
||||||
<Param type="int" name="compDataSize" desc="" />
|
<Param type="int" name="compDataSize" desc="" />
|
||||||
<Param type="int *" name="dataSize" desc="" />
|
<Param type="int *" name="dataSize" desc="" />
|
||||||
</Function>
|
</Function>
|
||||||
<Function name="EncodeDataBase64" retType="char *" paramCount="3" desc="Encode data to Base64 string">
|
<Function name="EncodeDataBase64" retType="char *" paramCount="3" desc="Encode data to Base64 string, memory must be MemFree()">
|
||||||
<Param type="const unsigned char *" name="data" desc="" />
|
<Param type="const unsigned char *" name="data" desc="" />
|
||||||
<Param type="int" name="dataSize" desc="" />
|
<Param type="int" name="dataSize" desc="" />
|
||||||
<Param type="int *" name="outputSize" desc="" />
|
<Param type="int *" name="outputSize" desc="" />
|
||||||
</Function>
|
</Function>
|
||||||
<Function name="DecodeDataBase64" retType="unsigned char *" paramCount="2" desc="Decode Base64 string data">
|
<Function name="DecodeDataBase64" retType="unsigned char *" paramCount="2" desc="Decode Base64 string data, memory must be MemFree()">
|
||||||
<Param type="const unsigned char *" name="data" desc="" />
|
<Param type="const unsigned char *" name="data" desc="" />
|
||||||
<Param type="int *" name="outputSize" desc="" />
|
<Param type="int *" name="outputSize" desc="" />
|
||||||
</Function>
|
</Function>
|
||||||
@ -2695,4 +2695,31 @@
|
|||||||
<Param type="AudioCallback" name="processor" desc="" />
|
<Param type="AudioCallback" name="processor" desc="" />
|
||||||
</Function>
|
</Function>
|
||||||
</Functions>
|
</Functions>
|
||||||
|
<Callbacks count="6">
|
||||||
|
<Callback name="TraceLogCallback" retType="void" paramCount="3" desc="Logging: Redirect trace log messages">
|
||||||
|
<Param type="int" name="logLevel" desc="" />
|
||||||
|
<Param type="const char *" name="text" desc="" />
|
||||||
|
<Param type="va_list" name="args" desc="" />
|
||||||
|
</Callback>
|
||||||
|
<Callback name="LoadFileDataCallback" retType="unsigned char *" paramCount="2" desc="FileIO: Load binary data">
|
||||||
|
<Param type="const char *" name="fileName" desc="" />
|
||||||
|
<Param type="unsigned int *" name="bytesRead" desc="" />
|
||||||
|
</Callback>
|
||||||
|
<Callback name="SaveFileDataCallback" retType="bool" paramCount="3" desc="FileIO: Save binary data">
|
||||||
|
<Param type="const char *" name="fileName" desc="" />
|
||||||
|
<Param type="void *" name="data" desc="" />
|
||||||
|
<Param type="unsigned int" name="bytesToWrite" desc="" />
|
||||||
|
</Callback>
|
||||||
|
<Callback name="LoadFileTextCallback" retType="char *" paramCount="1" desc="FileIO: Load text data">
|
||||||
|
<Param type="const char *" name="fileName" desc="" />
|
||||||
|
</Callback>
|
||||||
|
<Callback name="SaveFileTextCallback" retType="bool" paramCount="2" desc="FileIO: Save text data">
|
||||||
|
<Param type="const char *" name="fileName" desc="" />
|
||||||
|
<Param type="char *" name="text" desc="" />
|
||||||
|
</Callback>
|
||||||
|
<Callback name="AudioCallback" retType="void" paramCount="2" desc="">
|
||||||
|
<Param type="void *" name="bufferData" desc="" />
|
||||||
|
<Param type="unsigned int" name="frames" desc="" />
|
||||||
|
</Callback>
|
||||||
|
</Callbacks>
|
||||||
</raylibAPI>
|
</raylibAPI>
|
||||||
|
@ -67,6 +67,7 @@
|
|||||||
#include <ctype.h> // Required for: isdigit()
|
#include <ctype.h> // Required for: isdigit()
|
||||||
|
|
||||||
#define MAX_FUNCS_TO_PARSE 512 // Maximum number of functions to parse
|
#define MAX_FUNCS_TO_PARSE 512 // Maximum number of functions to parse
|
||||||
|
#define MAX_CALLBACKS_TO_PARSE 64 // Maximum number of callbacks to parse
|
||||||
#define MAX_STRUCTS_TO_PARSE 64 // Maximum number of structures to parse
|
#define MAX_STRUCTS_TO_PARSE 64 // Maximum number of structures to parse
|
||||||
#define MAX_ALIASES_TO_PARSE 64 // Maximum number of aliases to parse
|
#define MAX_ALIASES_TO_PARSE 64 // Maximum number of aliases to parse
|
||||||
#define MAX_ENUMS_TO_PARSE 64 // Maximum number of enums to parse
|
#define MAX_ENUMS_TO_PARSE 64 // Maximum number of enums to parse
|
||||||
@ -76,7 +77,7 @@
|
|||||||
#define MAX_STRUCT_LINE_LENGTH 2048 // Maximum length of one struct (multiple lines)
|
#define MAX_STRUCT_LINE_LENGTH 2048 // Maximum length of one struct (multiple lines)
|
||||||
|
|
||||||
#define MAX_FUNCTION_PARAMETERS 12 // Maximum number of function parameters
|
#define MAX_FUNCTION_PARAMETERS 12 // Maximum number of function parameters
|
||||||
#define MAX_STRUCT_FIELDS 32 // Maximum number of struct fields
|
#define MAX_STRUCT_FIELDS 64 // Maximum number of struct fields
|
||||||
#define MAX_ENUM_VALUES 512 // Maximum number of enum values
|
#define MAX_ENUM_VALUES 512 // Maximum number of enum values
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
@ -139,11 +140,13 @@ typedef enum { DEFAULT = 0, JSON, XML, LUA } OutputFormat;
|
|||||||
// Global Variables Definition
|
// Global Variables Definition
|
||||||
//----------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------
|
||||||
static int funcCount = 0;
|
static int funcCount = 0;
|
||||||
|
static int callbackCount = 0;
|
||||||
static int structCount = 0;
|
static int structCount = 0;
|
||||||
static int aliasCount = 0;
|
static int aliasCount = 0;
|
||||||
static int enumCount = 0;
|
static int enumCount = 0;
|
||||||
static int defineCount = 0;
|
static int defineCount = 0;
|
||||||
static FunctionInfo *funcs = NULL;
|
static FunctionInfo *funcs = NULL;
|
||||||
|
static FunctionInfo *callbacks = NULL;
|
||||||
static StructInfo *structs = NULL;
|
static StructInfo *structs = NULL;
|
||||||
static AliasInfo *aliases = NULL;
|
static AliasInfo *aliases = NULL;
|
||||||
static EnumInfo *enums = NULL;
|
static EnumInfo *enums = NULL;
|
||||||
@ -164,6 +167,7 @@ static void ProcessCommandLine(int argc, char *argv[]); // Process command l
|
|||||||
static char *LoadFileText(const char *fileName, int *length);
|
static char *LoadFileText(const char *fileName, int *length);
|
||||||
static char **GetTextLines(const char *buffer, int length, int *linesCount);
|
static char **GetTextLines(const char *buffer, int length, int *linesCount);
|
||||||
static void GetDataTypeAndName(const char *typeName, int typeNameLen, char *type, char *name);
|
static void GetDataTypeAndName(const char *typeName, int typeNameLen, char *type, char *name);
|
||||||
|
static void GetDescription(const char *source, char *description);
|
||||||
static unsigned int TextLength(const char *text); // Get text length in bytes, check for \0 character
|
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 bool IsTextEqual(const char *text1, const char *text2, unsigned int count);
|
||||||
static void MemoryCopy(void *dest, const void *src, unsigned int count);
|
static void MemoryCopy(void *dest, const void *src, unsigned int count);
|
||||||
@ -173,6 +177,8 @@ static void ExportParsedData(const char *fileName, int format); // Export parsed
|
|||||||
|
|
||||||
static const char *StrDefineType(DefineType type); // Get string of define type
|
static const char *StrDefineType(DefineType type); // Get string of define type
|
||||||
|
|
||||||
|
static void MoveArraySize(char *name, char *type); // Move array size from name to type
|
||||||
|
|
||||||
//------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------
|
||||||
// Program main entry point
|
// Program main entry point
|
||||||
//------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------
|
||||||
@ -190,19 +196,22 @@ int main(int argc, char* argv[])
|
|||||||
int linesCount = 0;
|
int linesCount = 0;
|
||||||
char **lines = GetTextLines(buffer, length, &linesCount);
|
char **lines = GetTextLines(buffer, length, &linesCount);
|
||||||
|
|
||||||
// Function lines pointers, selected from buffer "lines"
|
// Function line indices
|
||||||
char **funcLines = (char **)malloc(MAX_FUNCS_TO_PARSE*sizeof(char *));
|
int *funcLines = (int *)malloc(MAX_FUNCS_TO_PARSE*sizeof(int));
|
||||||
|
|
||||||
// Structs lines pointers, selected from buffer "lines"
|
// Callbacks line indices
|
||||||
|
int *callbackLines = (int *)malloc(MAX_CALLBACKS_TO_PARSE*sizeof(int));
|
||||||
|
|
||||||
|
// Structs line indices
|
||||||
int *structLines = (int *)malloc(MAX_STRUCTS_TO_PARSE*sizeof(int));
|
int *structLines = (int *)malloc(MAX_STRUCTS_TO_PARSE*sizeof(int));
|
||||||
|
|
||||||
// Aliases lines pointers, selected from buffer "lines"
|
// Aliases line indices
|
||||||
int *aliasLines = (int *)malloc(MAX_ALIASES_TO_PARSE*sizeof(int));
|
int *aliasLines = (int *)malloc(MAX_ALIASES_TO_PARSE*sizeof(int));
|
||||||
|
|
||||||
// Enums lines pointers, selected from buffer "lines"
|
// Enums line indices
|
||||||
int *enumLines = (int *)malloc(MAX_ENUMS_TO_PARSE*sizeof(int));
|
int *enumLines = (int *)malloc(MAX_ENUMS_TO_PARSE*sizeof(int));
|
||||||
|
|
||||||
// Defines lines pointers, selected from buffer "lines"
|
// Defines line indices
|
||||||
int *defineLines = (int *)malloc(MAX_DEFINES_TO_PARSE*sizeof(int));
|
int *defineLines = (int *)malloc(MAX_DEFINES_TO_PARSE*sizeof(int));
|
||||||
|
|
||||||
// Prepare required lines for parsing
|
// Prepare required lines for parsing
|
||||||
@ -214,30 +223,54 @@ int main(int argc, char* argv[])
|
|||||||
// Read function line (starting with `define`, i.e. for raylib.h "RLAPI")
|
// Read function line (starting with `define`, i.e. for raylib.h "RLAPI")
|
||||||
if (IsTextEqual(lines[i], apiDefine, TextLength(apiDefine)))
|
if (IsTextEqual(lines[i], apiDefine, TextLength(apiDefine)))
|
||||||
{
|
{
|
||||||
// Keep a pointer to the function line
|
funcLines[funcCount] = i;
|
||||||
funcLines[funcCount] = lines[i];
|
|
||||||
funcCount++;
|
funcCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Read callback lines
|
||||||
|
for (int i = 0; i < linesCount; i++)
|
||||||
|
{
|
||||||
|
// Find callbacks (lines with "typedef ... (* ... )( ... );")
|
||||||
|
if (IsTextEqual(lines[i], "typedef", 7))
|
||||||
|
{
|
||||||
|
bool hasBeginning = false;
|
||||||
|
bool hasMiddle = false;
|
||||||
|
bool hasEnd = false;
|
||||||
|
|
||||||
|
for (int c = 0; c < MAX_LINE_LENGTH; c++)
|
||||||
|
{
|
||||||
|
if ((lines[i][c] == '(') && (lines[i][c + 1] == '*')) hasBeginning = true;
|
||||||
|
if ((lines[i][c] == ')') && (lines[i][c + 1] == '(')) hasMiddle = true;
|
||||||
|
if ((lines[i][c] == ')') && (lines[i][c + 1] == ';')) hasEnd = true;
|
||||||
|
if (hasEnd) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasBeginning && hasMiddle && hasEnd)
|
||||||
|
{
|
||||||
|
callbackLines[callbackCount] = i;
|
||||||
|
callbackCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Read struct lines
|
// Read struct lines
|
||||||
for (int i = 0; i < linesCount; i++)
|
for (int i = 0; i < linesCount; i++)
|
||||||
{
|
{
|
||||||
// Find structs (starting with "typedef struct ... {", ending with '} ... ;')
|
// Find structs
|
||||||
|
// starting with "typedef struct ... {" or "typedef struct ... ; \n struct ... {"
|
||||||
|
// ending with "} ... ;"
|
||||||
|
// i.e. excluding "typedef struct rAudioBuffer rAudioBuffer;" -> Typedef and forward declaration only
|
||||||
if (IsTextEqual(lines[i], "typedef struct", 14))
|
if (IsTextEqual(lines[i], "typedef struct", 14))
|
||||||
{
|
{
|
||||||
int j = 0;
|
bool validStruct = IsTextEqual(lines[i + 1], "struct", 6);
|
||||||
bool validStruct = false;
|
if (!validStruct)
|
||||||
|
{
|
||||||
for (int c = 0; c < MAX_LINE_LENGTH; c++)
|
for (int c = 0; c < MAX_LINE_LENGTH; c++)
|
||||||
{
|
{
|
||||||
char v = lines[i][c];
|
char v = lines[i][c];
|
||||||
if (v == '{') validStruct = true;
|
if (v == '{') validStruct = true;
|
||||||
if (v == '{' || v == ';' || v == '\0')
|
if ((v == '{') || (v == ';') || (v == '\0')) break;
|
||||||
{
|
|
||||||
// Not valid struct if it ends without '{':
|
|
||||||
// i.e typedef struct rAudioBuffer rAudioBuffer; -> Typedef and forward declaration
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!validStruct) continue;
|
if (!validStruct) continue;
|
||||||
@ -261,8 +294,8 @@ int main(int argc, char* argv[])
|
|||||||
{
|
{
|
||||||
char v = lines[i][c];
|
char v = lines[i][c];
|
||||||
if (v == ' ') spaceCount++;
|
if (v == ' ') spaceCount++;
|
||||||
if (v == ';' && spaceCount == 2) validAlias = true;
|
if ((v == ';') && (spaceCount == 2)) validAlias = true;
|
||||||
if (v == ';' || v == '(' || v == '\0') break;
|
if ((v == ';') || (v == '(') || (v == '\0')) break;
|
||||||
}
|
}
|
||||||
if (!validAlias) continue;
|
if (!validAlias) continue;
|
||||||
aliasLines[aliasCount] = i;
|
aliasLines[aliasCount] = i;
|
||||||
@ -274,7 +307,7 @@ int main(int argc, char* argv[])
|
|||||||
for (int i = 0; i < linesCount; i++)
|
for (int i = 0; i < linesCount; i++)
|
||||||
{
|
{
|
||||||
// Read enum line
|
// Read enum line
|
||||||
if (IsTextEqual(lines[i], "typedef enum {", 14) && lines[i][TextLength(lines[i])-1] != ';') // ignore inline enums
|
if (IsTextEqual(lines[i], "typedef enum {", 14) && (lines[i][TextLength(lines[i])-1] != ';')) // ignore inline enums
|
||||||
{
|
{
|
||||||
// Keep the line position in the array of lines,
|
// Keep the line position in the array of lines,
|
||||||
// so, we can scan that position and following lines
|
// so, we can scan that position and following lines
|
||||||
@ -287,7 +320,7 @@ int main(int argc, char* argv[])
|
|||||||
for (int i = 0; i < linesCount; i++)
|
for (int i = 0; i < linesCount; i++)
|
||||||
{
|
{
|
||||||
int j = 0;
|
int j = 0;
|
||||||
while (lines[i][j] == ' ' || lines[i][j] == '\t') j++; // skip spaces and tabs in the begining
|
while ((lines[i][j] == ' ') || (lines[i][j] == '\t')) j++; // skip spaces and tabs in the begining
|
||||||
// Read define line
|
// Read define line
|
||||||
if (IsTextEqual(lines[i]+j, "#define ", 8))
|
if (IsTextEqual(lines[i]+j, "#define ", 8))
|
||||||
{
|
{
|
||||||
@ -313,18 +346,17 @@ int main(int argc, char* argv[])
|
|||||||
char **linesPtr = &lines[structLines[i]];
|
char **linesPtr = &lines[structLines[i]];
|
||||||
|
|
||||||
// Parse struct description
|
// Parse struct description
|
||||||
if (linesPtr[-1][0] == '/')
|
GetDescription(linesPtr[-1], structs[i].desc);
|
||||||
{
|
|
||||||
MemoryCopy(structs[i].desc, linesPtr[-1], TextLength(linesPtr[-1]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get struct name: typedef struct name {
|
// Get struct name: typedef struct name {
|
||||||
const int TDS_LEN = 15; // length of "typedef struct "
|
const int TDS_LEN = 15; // length of "typedef struct "
|
||||||
for (int c = TDS_LEN; c < 64 + TDS_LEN; c++)
|
for (int c = TDS_LEN; c < 64 + TDS_LEN; c++)
|
||||||
{
|
{
|
||||||
if (linesPtr[0][c] == '{')
|
if ((linesPtr[0][c] == '{') || (linesPtr[0][c] == ' '))
|
||||||
{
|
{
|
||||||
MemoryCopy(structs[i].name, &linesPtr[0][TDS_LEN], c - TDS_LEN - 1);
|
int nameLen = c - TDS_LEN;
|
||||||
|
while (linesPtr[0][TDS_LEN + nameLen - 1] == ' ') nameLen--;
|
||||||
|
MemoryCopy(structs[i].name, &linesPtr[0][TDS_LEN], nameLen);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -341,7 +373,7 @@ int main(int argc, char* argv[])
|
|||||||
int fieldEndPos = 0;
|
int fieldEndPos = 0;
|
||||||
while (fieldLine[fieldEndPos] != ';') fieldEndPos++;
|
while (fieldLine[fieldEndPos] != ';') fieldEndPos++;
|
||||||
|
|
||||||
if (fieldLine[0] != '/') // Field line is not a comment
|
if ((fieldLine[0] != '/') && !IsTextEqual(fieldLine, "struct", 6)) // Field line is not a comment and not a struct declaration
|
||||||
{
|
{
|
||||||
//printf("Struct field: %s_\n", fieldLine); // OK!
|
//printf("Struct field: %s_\n", fieldLine); // OK!
|
||||||
|
|
||||||
@ -349,27 +381,25 @@ int main(int argc, char* argv[])
|
|||||||
GetDataTypeAndName(fieldLine, fieldEndPos, structs[i].fieldType[structs[i].fieldCount], structs[i].fieldName[structs[i].fieldCount]);
|
GetDataTypeAndName(fieldLine, fieldEndPos, structs[i].fieldType[structs[i].fieldCount], structs[i].fieldName[structs[i].fieldCount]);
|
||||||
|
|
||||||
// Get the field description
|
// Get the field description
|
||||||
// We start skipping spaces in front of description comment
|
GetDescription(&fieldLine[fieldEndPos], structs[i].fieldDesc[structs[i].fieldCount]);
|
||||||
int descStart = fieldEndPos;
|
|
||||||
while ((fieldLine[descStart] != '/') && (fieldLine[descStart] != '\0')) descStart++;
|
|
||||||
|
|
||||||
int k = 0;
|
|
||||||
while ((fieldLine[descStart + k] != '\0') && (fieldLine[descStart + k] != '\n'))
|
|
||||||
{
|
|
||||||
structs[i].fieldDesc[structs[i].fieldCount][k] = fieldLine[descStart + k];
|
|
||||||
k++;
|
|
||||||
}
|
|
||||||
|
|
||||||
structs[i].fieldCount++;
|
structs[i].fieldCount++;
|
||||||
|
|
||||||
// Split field names containing multiple fields (like Matrix)
|
// Split field names containing multiple fields (like Matrix)
|
||||||
|
int additionalFields = 0;
|
||||||
int originalIndex = structs[i].fieldCount - 1;
|
int originalIndex = structs[i].fieldCount - 1;
|
||||||
|
for (int c = 0; c < TextLength(structs[i].fieldName[originalIndex]); c++)
|
||||||
|
{
|
||||||
|
if (structs[i].fieldName[originalIndex][c] == ',') additionalFields++;
|
||||||
|
}
|
||||||
|
if (additionalFields > 0)
|
||||||
|
{
|
||||||
int originalLength = -1;
|
int originalLength = -1;
|
||||||
int lastStart;
|
int lastStart;
|
||||||
for (int c = 0; c < TextLength(structs[i].fieldName[originalIndex]) + 1; c++)
|
for (int c = 0; c < TextLength(structs[i].fieldName[originalIndex]) + 1; c++)
|
||||||
{
|
{
|
||||||
char v = structs[i].fieldName[originalIndex][c];
|
char v = structs[i].fieldName[originalIndex][c];
|
||||||
bool isEndOfString = v == '\0';
|
bool isEndOfString = (v == '\0');
|
||||||
if ((v == ',') || isEndOfString)
|
if ((v == ',') || isEndOfString)
|
||||||
{
|
{
|
||||||
if (originalLength == -1)
|
if (originalLength == -1)
|
||||||
@ -382,9 +412,9 @@ int main(int argc, char* argv[])
|
|||||||
{
|
{
|
||||||
// Copy field data from original field
|
// Copy field data from original field
|
||||||
int nameLength = c - lastStart;
|
int nameLength = c - lastStart;
|
||||||
MemoryCopy(structs[i].fieldName[structs[i].fieldCount], &(structs[i].fieldName[originalIndex][lastStart]), nameLength);
|
MemoryCopy(structs[i].fieldName[structs[i].fieldCount], &structs[i].fieldName[originalIndex][lastStart], nameLength);
|
||||||
MemoryCopy(structs[i].fieldType[structs[i].fieldCount], &(structs[i].fieldType[originalIndex][0]), TextLength(structs[i].fieldType[originalIndex]));
|
MemoryCopy(structs[i].fieldType[structs[i].fieldCount], &structs[i].fieldType[originalIndex][0], TextLength(structs[i].fieldType[originalIndex]));
|
||||||
MemoryCopy(structs[i].fieldDesc[structs[i].fieldCount], &(structs[i].fieldDesc[originalIndex][0]), TextLength(structs[i].fieldDesc[originalIndex]));
|
MemoryCopy(structs[i].fieldDesc[structs[i].fieldCount], &structs[i].fieldDesc[originalIndex][0], TextLength(structs[i].fieldDesc[originalIndex]));
|
||||||
structs[i].fieldCount++;
|
structs[i].fieldCount++;
|
||||||
}
|
}
|
||||||
if (!isEndOfString)
|
if (!isEndOfString)
|
||||||
@ -398,28 +428,78 @@ int main(int argc, char* argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Set length of original field
|
// Set length of original field to truncate the first field name
|
||||||
// This has no effect on fields that are on their own line
|
|
||||||
// But it truncates the first field name of fields that share a line
|
|
||||||
structs[i].fieldName[originalIndex][originalLength] = '\0';
|
structs[i].fieldName[originalIndex][originalLength] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Split field types containing multiple fields (like MemNode)
|
||||||
|
additionalFields = 0;
|
||||||
|
originalIndex = structs[i].fieldCount - 1;
|
||||||
|
for (int c = 0; c < TextLength(structs[i].fieldType[originalIndex]); c++)
|
||||||
|
{
|
||||||
|
if (structs[i].fieldType[originalIndex][c] == ',') additionalFields++;
|
||||||
|
}
|
||||||
|
if (additionalFields > 0) {
|
||||||
|
// Copy original name to last additional field
|
||||||
|
structs[i].fieldCount += additionalFields;
|
||||||
|
MemoryCopy(structs[i].fieldName[originalIndex + additionalFields], &structs[i].fieldName[originalIndex][0], TextLength(structs[i].fieldName[originalIndex]));
|
||||||
|
|
||||||
|
// Copy names from type to additional fields
|
||||||
|
int fieldsRemaining = additionalFields;
|
||||||
|
int nameStart = -1;
|
||||||
|
int nameEnd = -1;
|
||||||
|
for (int k = TextLength(structs[i].fieldType[originalIndex]); k > 0; k--)
|
||||||
|
{
|
||||||
|
char v = structs[i].fieldType[originalIndex][k];
|
||||||
|
if ((v == '*') || (v == ' ') || (v == ','))
|
||||||
|
{
|
||||||
|
if (nameEnd != -1) {
|
||||||
|
// Don't copy to last additional field
|
||||||
|
if (fieldsRemaining != additionalFields)
|
||||||
|
{
|
||||||
|
nameStart = k + 1;
|
||||||
|
MemoryCopy(structs[i].fieldName[originalIndex + fieldsRemaining], &structs[i].fieldType[originalIndex][nameStart], nameEnd - nameStart + 1);
|
||||||
|
}
|
||||||
|
nameEnd = -1;
|
||||||
|
fieldsRemaining--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (nameEnd == -1) nameEnd = k;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Truncate original field type
|
||||||
|
int fieldTypeLength = nameStart;
|
||||||
|
structs[i].fieldType[originalIndex][fieldTypeLength] = '\0';
|
||||||
|
|
||||||
|
// Set field type and description of additional fields
|
||||||
|
for (int j = 1; j <= additionalFields; j++)
|
||||||
|
{
|
||||||
|
MemoryCopy(structs[i].fieldType[originalIndex + j], &structs[i].fieldType[originalIndex][0], fieldTypeLength);
|
||||||
|
MemoryCopy(structs[i].fieldDesc[originalIndex + j], &structs[i].fieldDesc[originalIndex][0], TextLength(structs[i].fieldDesc[originalIndex]));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
l++;
|
l++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Move array sizes from name to type
|
||||||
|
for (int j = 0; j < structs[i].fieldCount; j++)
|
||||||
|
{
|
||||||
|
MoveArraySize(structs[i].fieldName[j], structs[i].fieldType[j]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
free(structLines);
|
free(structLines);
|
||||||
|
|
||||||
// Alias info data
|
// Alias info data
|
||||||
aliases = (AliasInfo *)calloc(MAX_ALIASES_TO_PARSE, sizeof(AliasInfo));
|
aliases = (AliasInfo *)calloc(MAX_ALIASES_TO_PARSE, sizeof(AliasInfo));
|
||||||
int aliasIndex = 0;
|
|
||||||
|
|
||||||
for (int i = 0; i < aliasCount; i++)
|
for (int i = 0; i < aliasCount; i++)
|
||||||
{
|
{
|
||||||
// Description from previous line
|
// Description from previous line
|
||||||
char *previousLinePtr = lines[aliasLines[i] - 1];
|
GetDescription(lines[aliasLines[i] - 1], aliases[i].desc);
|
||||||
if (previousLinePtr[0] == '/') MemoryCopy(aliases[i].desc, previousLinePtr, MAX_LINE_LENGTH);
|
|
||||||
|
|
||||||
char *linePtr = lines[aliasLines[i]];
|
char *linePtr = lines[aliasLines[i]];
|
||||||
|
|
||||||
@ -430,7 +510,7 @@ int main(int argc, char* argv[])
|
|||||||
int typeStart = c;
|
int typeStart = c;
|
||||||
while(linePtr[c] != ' ') c++;
|
while(linePtr[c] != ' ') c++;
|
||||||
int typeLen = c - typeStart;
|
int typeLen = c - typeStart;
|
||||||
MemoryCopy(aliases[i].type, linePtr + typeStart, typeLen);
|
MemoryCopy(aliases[i].type, &linePtr[typeStart], typeLen);
|
||||||
|
|
||||||
// Skip space
|
// Skip space
|
||||||
c++;
|
c++;
|
||||||
@ -439,14 +519,69 @@ int main(int argc, char* argv[])
|
|||||||
int nameStart = c;
|
int nameStart = c;
|
||||||
while(linePtr[c] != ';') c++;
|
while(linePtr[c] != ';') c++;
|
||||||
int nameLen = c - nameStart;
|
int nameLen = c - nameStart;
|
||||||
MemoryCopy(aliases[i].name, linePtr + nameStart, nameLen);
|
MemoryCopy(aliases[i].name, &linePtr[nameStart], nameLen);
|
||||||
|
|
||||||
// Description
|
// Description
|
||||||
while((linePtr[c] != '\0') && (linePtr[c] != '/')) c++;
|
GetDescription(&linePtr[c], aliases[i].desc);
|
||||||
if (linePtr[c] == '/') MemoryCopy(aliases[i].desc, linePtr + c, MAX_LINE_LENGTH);
|
|
||||||
}
|
}
|
||||||
free(aliasLines);
|
free(aliasLines);
|
||||||
|
|
||||||
|
// Callback info data
|
||||||
|
callbacks = (FunctionInfo *)calloc(MAX_CALLBACKS_TO_PARSE, sizeof(FunctionInfo));
|
||||||
|
|
||||||
|
for (int i = 0; i < callbackCount; i++)
|
||||||
|
{
|
||||||
|
char *linePtr = lines[callbackLines[i]];
|
||||||
|
|
||||||
|
// Skip "typedef "
|
||||||
|
int c = 8;
|
||||||
|
|
||||||
|
// Return type
|
||||||
|
int retTypeStart = c;
|
||||||
|
while(linePtr[c] != '(') c++;
|
||||||
|
int retTypeLen = c - retTypeStart;
|
||||||
|
while(linePtr[retTypeStart + retTypeLen - 1] == ' ') retTypeLen--;
|
||||||
|
MemoryCopy(callbacks[i].retType, &linePtr[retTypeStart], retTypeLen);
|
||||||
|
|
||||||
|
// Skip "(*"
|
||||||
|
c += 2;
|
||||||
|
|
||||||
|
// Name
|
||||||
|
int nameStart = c;
|
||||||
|
while(linePtr[c] != ')') c++;
|
||||||
|
int nameLen = c - nameStart;
|
||||||
|
MemoryCopy(callbacks[i].name, &linePtr[nameStart], nameLen);
|
||||||
|
|
||||||
|
// Skip ")("
|
||||||
|
c += 2;
|
||||||
|
|
||||||
|
// Params
|
||||||
|
int paramStart = c;
|
||||||
|
for (c; c < MAX_LINE_LENGTH; c++)
|
||||||
|
{
|
||||||
|
if ((linePtr[c] == ',') || (linePtr[c] == ')'))
|
||||||
|
{
|
||||||
|
// Get parameter type + name, extract info
|
||||||
|
int paramLen = c - paramStart;
|
||||||
|
GetDataTypeAndName(&linePtr[paramStart], paramLen, callbacks[i].paramType[callbacks[i].paramCount], callbacks[i].paramName[callbacks[i].paramCount]);
|
||||||
|
callbacks[i].paramCount++;
|
||||||
|
paramStart = c + 1;
|
||||||
|
while(linePtr[paramStart] == ' ') paramStart++;
|
||||||
|
}
|
||||||
|
if (linePtr[c] == ')') break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Description
|
||||||
|
GetDescription(&linePtr[c], callbacks[i].desc);
|
||||||
|
|
||||||
|
// Move array sizes from name to type
|
||||||
|
for (int j = 0; j < callbacks[i].paramCount; j++)
|
||||||
|
{
|
||||||
|
MoveArraySize(callbacks[i].paramName[j], callbacks[i].paramType[j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
free(callbackLines);
|
||||||
|
|
||||||
// Enum info data
|
// Enum info data
|
||||||
enums = (EnumInfo *)calloc(MAX_ENUMS_TO_PARSE, sizeof(EnumInfo));
|
enums = (EnumInfo *)calloc(MAX_ENUMS_TO_PARSE, sizeof(EnumInfo));
|
||||||
|
|
||||||
@ -462,7 +597,7 @@ int main(int argc, char* argv[])
|
|||||||
char *linePtr = lines[j];
|
char *linePtr = lines[j];
|
||||||
if ((linePtr[0] != '/') || (linePtr[2] != ' '))
|
if ((linePtr[0] != '/') || (linePtr[2] != ' '))
|
||||||
{
|
{
|
||||||
MemoryCopy(enums[i].desc, &lines[j + 1][0], sizeof(enums[i].desc) - 1);
|
GetDescription(&lines[j + 1][0], enums[i].desc);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -536,13 +671,8 @@ int main(int argc, char* argv[])
|
|||||||
}
|
}
|
||||||
else enums[i].valueInteger[enums[i].valueCount] = (enums[i].valueInteger[enums[i].valueCount - 1] + 1);
|
else enums[i].valueInteger[enums[i].valueCount] = (enums[i].valueInteger[enums[i].valueCount - 1] + 1);
|
||||||
|
|
||||||
// Look for description or end of line
|
|
||||||
while ((linePtr[c] != '/') && (linePtr[c] != '\0')) c++;
|
|
||||||
if (linePtr[c] == '/')
|
|
||||||
{
|
|
||||||
// Parse value description
|
// Parse value description
|
||||||
MemoryCopy(enums[i].valueDesc[enums[i].valueCount], &linePtr[c], sizeof(enums[0].valueDesc[0]) - c - 1);
|
GetDescription(&linePtr[c], enums[i].valueDesc[enums[i].valueCount]);
|
||||||
}
|
|
||||||
|
|
||||||
enums[i].valueCount++;
|
enums[i].valueCount++;
|
||||||
}
|
}
|
||||||
@ -577,7 +707,14 @@ int main(int argc, char* argv[])
|
|||||||
|
|
||||||
// Extract name
|
// Extract name
|
||||||
int defineNameStart = j;
|
int defineNameStart = j;
|
||||||
while ((linePtr[j] != ' ') && (linePtr[j] != '\t') && (linePtr[j] != '\0')) j++;
|
int openBraces = 0;
|
||||||
|
while (linePtr[j] != '\0')
|
||||||
|
{
|
||||||
|
if (((linePtr[j] == ' ') || (linePtr[j] == '\t')) && (openBraces == 0)) break;
|
||||||
|
if (linePtr[j] == '(') openBraces++;
|
||||||
|
if (linePtr[j] == ')') openBraces--;
|
||||||
|
j++;
|
||||||
|
}
|
||||||
int defineNameEnd = j-1;
|
int defineNameEnd = j-1;
|
||||||
|
|
||||||
// Skip duplicates
|
// Skip duplicates
|
||||||
@ -585,7 +722,7 @@ int main(int argc, char* argv[])
|
|||||||
bool isDuplicate = false;
|
bool isDuplicate = false;
|
||||||
for (int k = 0; k < defineIndex; k++)
|
for (int k = 0; k < defineIndex; k++)
|
||||||
{
|
{
|
||||||
if ((nameLen == TextLength(defines[k].name)) && IsTextEqual(defines[k].name, linePtr + defineNameStart, nameLen))
|
if ((nameLen == TextLength(defines[k].name)) && IsTextEqual(defines[k].name, &linePtr[defineNameStart], nameLen))
|
||||||
{
|
{
|
||||||
isDuplicate = true;
|
isDuplicate = true;
|
||||||
break;
|
break;
|
||||||
@ -593,7 +730,7 @@ int main(int argc, char* argv[])
|
|||||||
}
|
}
|
||||||
if (isDuplicate) continue;
|
if (isDuplicate) continue;
|
||||||
|
|
||||||
MemoryCopy(defines[defineIndex].name, linePtr + defineNameStart, nameLen);
|
MemoryCopy(defines[defineIndex].name, &linePtr[defineNameStart], nameLen);
|
||||||
|
|
||||||
// Determine type
|
// Determine type
|
||||||
if (linePtr[defineNameEnd] == ')') defines[defineIndex].type = MACRO;
|
if (linePtr[defineNameEnd] == ')') defines[defineIndex].type = MACRO;
|
||||||
@ -645,18 +782,20 @@ int main(int argc, char* argv[])
|
|||||||
int valueLen = defineValueEnd - defineValueStart + 1;
|
int valueLen = defineValueEnd - defineValueStart + 1;
|
||||||
if (valueLen > 255) valueLen = 255;
|
if (valueLen > 255) valueLen = 255;
|
||||||
|
|
||||||
if (valueLen > 0) MemoryCopy(defines[defineIndex].value, linePtr + defineValueStart, valueLen);
|
if (valueLen > 0) MemoryCopy(defines[defineIndex].value, &linePtr[defineValueStart], valueLen);
|
||||||
|
|
||||||
// Extracting description
|
// Extracting description
|
||||||
if (linePtr[j] == '/')
|
if ((linePtr[j] == '/') && linePtr[j + 1] == '/')
|
||||||
{
|
{
|
||||||
|
j += 2;
|
||||||
|
while (linePtr[j] == ' ') j++;
|
||||||
int commentStart = j;
|
int commentStart = j;
|
||||||
while ((linePtr[j] != '\\') && (linePtr[j] != '\0')) j++;
|
while ((linePtr[j] != '\\') && (linePtr[j] != '\0')) j++;
|
||||||
int commentEnd = j-1;
|
int commentEnd = j-1;
|
||||||
int commentLen = commentEnd - commentStart + 1;
|
int commentLen = commentEnd - commentStart + 1;
|
||||||
if (commentLen > 127) commentLen = 127;
|
if (commentLen > 127) commentLen = 127;
|
||||||
|
|
||||||
MemoryCopy(defines[defineIndex].desc, linePtr + commentStart, commentLen);
|
MemoryCopy(defines[defineIndex].desc, &linePtr[commentStart], commentLen);
|
||||||
}
|
}
|
||||||
|
|
||||||
defineIndex++;
|
defineIndex++;
|
||||||
@ -669,13 +808,15 @@ int main(int argc, char* argv[])
|
|||||||
|
|
||||||
for (int i = 0; i < funcCount; i++)
|
for (int i = 0; i < funcCount; i++)
|
||||||
{
|
{
|
||||||
|
char *linePtr = lines[funcLines[i]];
|
||||||
|
|
||||||
int funcParamsStart = 0;
|
int funcParamsStart = 0;
|
||||||
int funcEnd = 0;
|
int funcEnd = 0;
|
||||||
|
|
||||||
// Get return type and function name from func line
|
// Get return type and function name from func line
|
||||||
for (int c = 0; (c < MAX_LINE_LENGTH) && (funcLines[i][c] != '\n'); c++)
|
for (int c = 0; (c < MAX_LINE_LENGTH) && (linePtr[c] != '\n'); c++)
|
||||||
{
|
{
|
||||||
if (funcLines[i][c] == '(') // Starts function parameters
|
if (linePtr[c] == '(') // Starts function parameters
|
||||||
{
|
{
|
||||||
funcParamsStart = c + 1;
|
funcParamsStart = c + 1;
|
||||||
|
|
||||||
@ -683,7 +824,7 @@ int main(int argc, char* argv[])
|
|||||||
char funcRetTypeName[128] = { 0 };
|
char funcRetTypeName[128] = { 0 };
|
||||||
int dc = TextLength(apiDefine) + 1;
|
int dc = TextLength(apiDefine) + 1;
|
||||||
int funcRetTypeNameLen = c - dc; // Substract `define` ("RLAPI " for raylib.h)
|
int funcRetTypeNameLen = c - dc; // Substract `define` ("RLAPI " for raylib.h)
|
||||||
MemoryCopy(funcRetTypeName, &funcLines[i][dc], funcRetTypeNameLen);
|
MemoryCopy(funcRetTypeName, &linePtr[dc], funcRetTypeNameLen);
|
||||||
|
|
||||||
GetDataTypeAndName(funcRetTypeName, funcRetTypeNameLen, funcs[i].retType, funcs[i].name);
|
GetDataTypeAndName(funcRetTypeName, funcRetTypeNameLen, funcs[i].retType, funcs[i].name);
|
||||||
break;
|
break;
|
||||||
@ -693,30 +834,30 @@ int main(int argc, char* argv[])
|
|||||||
// Get parameters from func line
|
// Get parameters from func line
|
||||||
for (int c = funcParamsStart; c < MAX_LINE_LENGTH; c++)
|
for (int c = funcParamsStart; c < MAX_LINE_LENGTH; c++)
|
||||||
{
|
{
|
||||||
if (funcLines[i][c] == ',') // Starts function parameters
|
if (linePtr[c] == ',') // Starts function parameters
|
||||||
{
|
{
|
||||||
// Get parameter type + name, extract info
|
// Get parameter type + name, extract info
|
||||||
char funcParamTypeName[128] = { 0 };
|
char funcParamTypeName[128] = { 0 };
|
||||||
int funcParamTypeNameLen = c - funcParamsStart;
|
int funcParamTypeNameLen = c - funcParamsStart;
|
||||||
MemoryCopy(funcParamTypeName, &funcLines[i][funcParamsStart], funcParamTypeNameLen);
|
MemoryCopy(funcParamTypeName, &linePtr[funcParamsStart], funcParamTypeNameLen);
|
||||||
|
|
||||||
GetDataTypeAndName(funcParamTypeName, funcParamTypeNameLen, funcs[i].paramType[funcs[i].paramCount], funcs[i].paramName[funcs[i].paramCount]);
|
GetDataTypeAndName(funcParamTypeName, funcParamTypeNameLen, funcs[i].paramType[funcs[i].paramCount], funcs[i].paramName[funcs[i].paramCount]);
|
||||||
|
|
||||||
funcParamsStart = c + 1;
|
funcParamsStart = c + 1;
|
||||||
if (funcLines[i][c + 1] == ' ') funcParamsStart += 1;
|
if (linePtr[c + 1] == ' ') funcParamsStart += 1;
|
||||||
funcs[i].paramCount++; // Move to next parameter
|
funcs[i].paramCount++; // Move to next parameter
|
||||||
}
|
}
|
||||||
else if (funcLines[i][c] == ')')
|
else if (linePtr[c] == ')')
|
||||||
{
|
{
|
||||||
funcEnd = c + 2;
|
funcEnd = c + 2;
|
||||||
|
|
||||||
// Check if previous word is void
|
// 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;
|
if ((linePtr[c - 4] == 'v') && (linePtr[c - 3] == 'o') && (linePtr[c - 2] == 'i') && (linePtr[c - 1] == 'd')) break;
|
||||||
|
|
||||||
// Get parameter type + name, extract info
|
// Get parameter type + name, extract info
|
||||||
char funcParamTypeName[128] = { 0 };
|
char funcParamTypeName[128] = { 0 };
|
||||||
int funcParamTypeNameLen = c - funcParamsStart;
|
int funcParamTypeNameLen = c - funcParamsStart;
|
||||||
MemoryCopy(funcParamTypeName, &funcLines[i][funcParamsStart], funcParamTypeNameLen);
|
MemoryCopy(funcParamTypeName, &linePtr[funcParamsStart], funcParamTypeNameLen);
|
||||||
|
|
||||||
GetDataTypeAndName(funcParamTypeName, funcParamTypeNameLen, funcs[i].paramType[funcs[i].paramCount], funcs[i].paramName[funcs[i].paramCount]);
|
GetDataTypeAndName(funcParamTypeName, funcParamTypeNameLen, funcs[i].paramType[funcs[i].paramCount], funcs[i].paramName[funcs[i].paramCount]);
|
||||||
|
|
||||||
@ -726,19 +867,18 @@ int main(int argc, char* argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get function description
|
// Get function description
|
||||||
for (int c = funcEnd; c < MAX_LINE_LENGTH; c++)
|
GetDescription(&linePtr[funcEnd], funcs[i].desc);
|
||||||
|
|
||||||
|
// Move array sizes from name to type
|
||||||
|
for (int j = 0; j < funcs[i].paramCount; j++)
|
||||||
{
|
{
|
||||||
if (funcLines[i][c] == '/')
|
MoveArraySize(funcs[i].paramName[j], funcs[i].paramType[j]);
|
||||||
{
|
|
||||||
MemoryCopy(funcs[i].desc, &funcLines[i][c], 127); // WARNING: Size could be too long for funcLines[i][c]?
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
free(funcLines);
|
||||||
|
|
||||||
for (int i = 0; i < linesCount; i++) free(lines[i]);
|
for (int i = 0; i < linesCount; i++) free(lines[i]);
|
||||||
free(lines);
|
free(lines);
|
||||||
free(funcLines);
|
|
||||||
|
|
||||||
// At this point, all raylib data has been parsed!
|
// At this point, all raylib data has been parsed!
|
||||||
//-----------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------
|
||||||
@ -746,6 +886,7 @@ int main(int argc, char* argv[])
|
|||||||
// aliases[] -> We have all the aliases decomposed into pieces for further analysis
|
// aliases[] -> We have all the aliases decomposed into pieces for further analysis
|
||||||
// enums[] -> We have all the enums 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
|
// funcs[] -> We have all the functions decomposed into pieces for further analysis
|
||||||
|
// callbacks[] -> We have all the callbacks decomposed into pieces for further analysis
|
||||||
// defines[] -> We have all the defines decomposed into pieces for further analysis
|
// defines[] -> We have all the defines decomposed into pieces for further analysis
|
||||||
|
|
||||||
// Process input file to output
|
// Process input file to output
|
||||||
@ -761,6 +902,7 @@ int main(int argc, char* argv[])
|
|||||||
ExportParsedData(outFileName, outputFormat);
|
ExportParsedData(outFileName, outputFormat);
|
||||||
|
|
||||||
free(funcs);
|
free(funcs);
|
||||||
|
free(callbacks);
|
||||||
free(structs);
|
free(structs);
|
||||||
free(aliases);
|
free(aliases);
|
||||||
free(enums);
|
free(enums);
|
||||||
@ -969,6 +1111,26 @@ static void GetDataTypeAndName(const char *typeName, int typeNameLen, char *type
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get comment from a line, do nothing if no comment in line
|
||||||
|
static void GetDescription(const char *line, char *description)
|
||||||
|
{
|
||||||
|
int c = 0;
|
||||||
|
int descStart = -1;
|
||||||
|
int lastSlash = -2;
|
||||||
|
bool isValid = false;
|
||||||
|
while (line[c] != '\0')
|
||||||
|
{
|
||||||
|
if (isValid && (descStart == -1) && (line[c] != ' ')) descStart = c;
|
||||||
|
else if (line[c] == '/')
|
||||||
|
{
|
||||||
|
if (lastSlash == c - 1) isValid = true;
|
||||||
|
lastSlash = c;
|
||||||
|
}
|
||||||
|
c++;
|
||||||
|
}
|
||||||
|
if (descStart != -1) MemoryCopy(description, &line[descStart], c - descStart);
|
||||||
|
}
|
||||||
|
|
||||||
// Get text length in bytes, check for \0 character
|
// Get text length in bytes, check for \0 character
|
||||||
static unsigned int TextLength(const char *text)
|
static unsigned int TextLength(const char *text)
|
||||||
{
|
{
|
||||||
@ -1047,6 +1209,24 @@ static const char *StrDefineType(DefineType type)
|
|||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Move array size from name to type
|
||||||
|
static void MoveArraySize(char *name, char *type)
|
||||||
|
{
|
||||||
|
int nameLength = TextLength(name);
|
||||||
|
if (name[nameLength - 1] == ']')
|
||||||
|
{
|
||||||
|
for (int k = nameLength; k > 0; k--)
|
||||||
|
{
|
||||||
|
if (name[k] == '[')
|
||||||
|
{
|
||||||
|
int sizeLength = nameLength - k;
|
||||||
|
MemoryCopy(&type[TextLength(type)], &name[k], sizeLength);
|
||||||
|
name[k] = '\0';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// Replace text string
|
// Replace text string
|
||||||
// REQUIRES: strlen(), strstr(), strncpy(), strcpy() -> TODO: Replace by custom implementations!
|
// REQUIRES: strlen(), strstr(), strncpy(), strcpy() -> TODO: Replace by custom implementations!
|
||||||
@ -1114,8 +1294,13 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
{
|
{
|
||||||
fprintf(outFile, "Struct %02i: %s (%i fields)\n", i + 1, structs[i].name, structs[i].fieldCount);
|
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, " Name: %s\n", structs[i].name);
|
||||||
fprintf(outFile, " Description: %s\n", structs[i].desc + 3);
|
fprintf(outFile, " Description: %s\n", structs[i].desc);
|
||||||
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]);
|
for (int f = 0; f < structs[i].fieldCount; f++)
|
||||||
|
{
|
||||||
|
fprintf(outFile, " Field[%i]: %s %s ", f + 1, structs[i].fieldType[f], structs[i].fieldName[f]);
|
||||||
|
if (structs[i].fieldDesc[f][0]) fprintf(outFile, "// %s\n", structs[i].fieldDesc[f]);
|
||||||
|
else fprintf(outFile, "\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Print aliases info
|
// Print aliases info
|
||||||
@ -1125,7 +1310,7 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
fprintf(outFile, "Alias %03i: %s\n", i + 1, aliases[i].name);
|
fprintf(outFile, "Alias %03i: %s\n", i + 1, aliases[i].name);
|
||||||
fprintf(outFile, " Type: %s\n", aliases[i].type);
|
fprintf(outFile, " Type: %s\n", aliases[i].type);
|
||||||
fprintf(outFile, " Name: %s\n", aliases[i].name);
|
fprintf(outFile, " Name: %s\n", aliases[i].name);
|
||||||
fprintf(outFile, " Description: %s\n", aliases[i].desc + 3);
|
fprintf(outFile, " Description: %s\n", aliases[i].desc);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Print enums info
|
// Print enums info
|
||||||
@ -1134,7 +1319,7 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
{
|
{
|
||||||
fprintf(outFile, "Enum %02i: %s (%i values)\n", i + 1, enums[i].name, enums[i].valueCount);
|
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, " Name: %s\n", enums[i].name);
|
||||||
fprintf(outFile, " Description: %s\n", enums[i].desc + 3);
|
fprintf(outFile, " Description: %s\n", enums[i].desc);
|
||||||
for (int e = 0; e < enums[i].valueCount; e++) fprintf(outFile, " Value[%s]: %i\n", enums[i].valueName[e], enums[i].valueInteger[e]);
|
for (int e = 0; e < enums[i].valueCount; e++) fprintf(outFile, " Value[%s]: %i\n", enums[i].valueName[e], enums[i].valueInteger[e]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1145,11 +1330,23 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
fprintf(outFile, "Function %03i: %s() (%i input parameters)\n", i + 1, funcs[i].name, funcs[i].paramCount);
|
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, " Name: %s\n", funcs[i].name);
|
||||||
fprintf(outFile, " Return type: %s\n", funcs[i].retType);
|
fprintf(outFile, " Return type: %s\n", funcs[i].retType);
|
||||||
fprintf(outFile, " Description: %s\n", funcs[i].desc + 3);
|
fprintf(outFile, " Description: %s\n", funcs[i].desc);
|
||||||
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]);
|
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");
|
if (funcs[i].paramCount == 0) fprintf(outFile, " No input parameters\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Print callbacks info
|
||||||
|
fprintf(outFile, "\nCallbacks found: %i\n\n", callbackCount);
|
||||||
|
for (int i = 0; i < callbackCount; i++)
|
||||||
|
{
|
||||||
|
fprintf(outFile, "Callback %03i: %s() (%i input parameters)\n", i + 1, callbacks[i].name, callbacks[i].paramCount);
|
||||||
|
fprintf(outFile, " Name: %s\n", callbacks[i].name);
|
||||||
|
fprintf(outFile, " Return type: %s\n", callbacks[i].retType);
|
||||||
|
fprintf(outFile, " Description: %s\n", callbacks[i].desc);
|
||||||
|
for (int p = 0; p < callbacks[i].paramCount; p++) fprintf(outFile, " Param[%i]: %s (type: %s)\n", p + 1, callbacks[i].paramName[p], callbacks[i].paramType[p]);
|
||||||
|
if (callbacks[i].paramCount == 0) fprintf(outFile, " No input parameters\n");
|
||||||
|
}
|
||||||
|
|
||||||
// Print defines info
|
// Print defines info
|
||||||
fprintf(outFile, "\nDefines found: %i\n\n", defineCount);
|
fprintf(outFile, "\nDefines found: %i\n\n", defineCount);
|
||||||
for (int i = 0; i < defineCount; i++)
|
for (int i = 0; i < defineCount; i++)
|
||||||
@ -1158,7 +1355,7 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
fprintf(outFile, " Name: %s\n", defines[i].name);
|
fprintf(outFile, " Name: %s\n", defines[i].name);
|
||||||
fprintf(outFile, " Type: %s\n", StrDefineType(defines[i].type));
|
fprintf(outFile, " Type: %s\n", StrDefineType(defines[i].type));
|
||||||
fprintf(outFile, " Value: %s\n", defines[i].value);
|
fprintf(outFile, " Value: %s\n", defines[i].value);
|
||||||
fprintf(outFile, " Description: %s\n", defines[i].desc + 3);
|
fprintf(outFile, " Description: %s\n", defines[i].desc);
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case LUA:
|
case LUA:
|
||||||
@ -1171,14 +1368,14 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
{
|
{
|
||||||
fprintf(outFile, " {\n");
|
fprintf(outFile, " {\n");
|
||||||
fprintf(outFile, " name = \"%s\",\n", structs[i].name);
|
fprintf(outFile, " name = \"%s\",\n", structs[i].name);
|
||||||
fprintf(outFile, " description = \"%s\",\n", EscapeBackslashes(structs[i].desc + 3));
|
fprintf(outFile, " description = \"%s\",\n", EscapeBackslashes(structs[i].desc));
|
||||||
fprintf(outFile, " fields = {\n");
|
fprintf(outFile, " fields = {\n");
|
||||||
for (int f = 0; f < structs[i].fieldCount; f++)
|
for (int f = 0; f < structs[i].fieldCount; f++)
|
||||||
{
|
{
|
||||||
fprintf(outFile, " {\n");
|
fprintf(outFile, " {\n");
|
||||||
fprintf(outFile, " type = \"%s\",\n", structs[i].fieldType[f]);
|
fprintf(outFile, " type = \"%s\",\n", structs[i].fieldType[f]);
|
||||||
fprintf(outFile, " name = \"%s\",\n", structs[i].fieldName[f]);
|
fprintf(outFile, " name = \"%s\",\n", structs[i].fieldName[f]);
|
||||||
fprintf(outFile, " description = \"%s\"\n", EscapeBackslashes(structs[i].fieldDesc[f] + 3));
|
fprintf(outFile, " description = \"%s\"\n", EscapeBackslashes(structs[i].fieldDesc[f]));
|
||||||
fprintf(outFile, " }");
|
fprintf(outFile, " }");
|
||||||
if (f < structs[i].fieldCount - 1) fprintf(outFile, ",\n");
|
if (f < structs[i].fieldCount - 1) fprintf(outFile, ",\n");
|
||||||
else fprintf(outFile, "\n");
|
else fprintf(outFile, "\n");
|
||||||
@ -1197,7 +1394,7 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
fprintf(outFile, " {\n");
|
fprintf(outFile, " {\n");
|
||||||
fprintf(outFile, " type = \"%s\",\n", aliases[i].type);
|
fprintf(outFile, " type = \"%s\",\n", aliases[i].type);
|
||||||
fprintf(outFile, " name = \"%s\",\n", aliases[i].name);
|
fprintf(outFile, " name = \"%s\",\n", aliases[i].name);
|
||||||
fprintf(outFile, " description = \"%s\"\n", aliases[i].desc + 3);
|
fprintf(outFile, " description = \"%s\"\n", aliases[i].desc);
|
||||||
fprintf(outFile, " }");
|
fprintf(outFile, " }");
|
||||||
|
|
||||||
if (i < aliasCount - 1) fprintf(outFile, ",\n");
|
if (i < aliasCount - 1) fprintf(outFile, ",\n");
|
||||||
@ -1211,14 +1408,14 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
{
|
{
|
||||||
fprintf(outFile, " {\n");
|
fprintf(outFile, " {\n");
|
||||||
fprintf(outFile, " name = \"%s\",\n", enums[i].name);
|
fprintf(outFile, " name = \"%s\",\n", enums[i].name);
|
||||||
fprintf(outFile, " description = \"%s\",\n", EscapeBackslashes(enums[i].desc + 3));
|
fprintf(outFile, " description = \"%s\",\n", EscapeBackslashes(enums[i].desc));
|
||||||
fprintf(outFile, " values = {\n");
|
fprintf(outFile, " values = {\n");
|
||||||
for (int e = 0; e < enums[i].valueCount; e++)
|
for (int e = 0; e < enums[i].valueCount; e++)
|
||||||
{
|
{
|
||||||
fprintf(outFile, " {\n");
|
fprintf(outFile, " {\n");
|
||||||
fprintf(outFile, " name = \"%s\",\n", enums[i].valueName[e]);
|
fprintf(outFile, " name = \"%s\",\n", enums[i].valueName[e]);
|
||||||
fprintf(outFile, " value = %i,\n", enums[i].valueInteger[e]);
|
fprintf(outFile, " value = %i,\n", enums[i].valueInteger[e]);
|
||||||
fprintf(outFile, " description = \"%s\"\n", EscapeBackslashes(enums[i].valueDesc[e] + 3));
|
fprintf(outFile, " description = \"%s\"\n", EscapeBackslashes(enums[i].valueDesc[e]));
|
||||||
fprintf(outFile, " }");
|
fprintf(outFile, " }");
|
||||||
if (e < enums[i].valueCount - 1) fprintf(outFile, ",\n");
|
if (e < enums[i].valueCount - 1) fprintf(outFile, ",\n");
|
||||||
else fprintf(outFile, "\n");
|
else fprintf(outFile, "\n");
|
||||||
@ -1249,7 +1446,7 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
{
|
{
|
||||||
fprintf(outFile, " value = \"%s\",\n", defines[i].value);
|
fprintf(outFile, " value = \"%s\",\n", defines[i].value);
|
||||||
}
|
}
|
||||||
fprintf(outFile, " description = \"%s\"\n", defines[i].desc + 3);
|
fprintf(outFile, " description = \"%s\"\n", defines[i].desc);
|
||||||
fprintf(outFile, " }");
|
fprintf(outFile, " }");
|
||||||
|
|
||||||
if (i < defineCount - 1) fprintf(outFile, ",\n");
|
if (i < defineCount - 1) fprintf(outFile, ",\n");
|
||||||
@ -1263,7 +1460,7 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
{
|
{
|
||||||
fprintf(outFile, " {\n");
|
fprintf(outFile, " {\n");
|
||||||
fprintf(outFile, " name = \"%s\",\n", funcs[i].name);
|
fprintf(outFile, " name = \"%s\",\n", funcs[i].name);
|
||||||
fprintf(outFile, " description = \"%s\",\n", EscapeBackslashes(funcs[i].desc + 3));
|
fprintf(outFile, " description = \"%s\",\n", EscapeBackslashes(funcs[i].desc));
|
||||||
fprintf(outFile, " returnType = \"%s\"", funcs[i].retType);
|
fprintf(outFile, " returnType = \"%s\"", funcs[i].retType);
|
||||||
|
|
||||||
if (funcs[i].paramCount == 0) fprintf(outFile, "\n");
|
if (funcs[i].paramCount == 0) fprintf(outFile, "\n");
|
||||||
@ -1283,6 +1480,34 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
if (i < funcCount - 1) fprintf(outFile, ",\n");
|
if (i < funcCount - 1) fprintf(outFile, ",\n");
|
||||||
else fprintf(outFile, "\n");
|
else fprintf(outFile, "\n");
|
||||||
}
|
}
|
||||||
|
fprintf(outFile, " },\n");
|
||||||
|
|
||||||
|
// Print callbacks info
|
||||||
|
fprintf(outFile, " callbacks = {\n");
|
||||||
|
for (int i = 0; i < callbackCount; i++)
|
||||||
|
{
|
||||||
|
fprintf(outFile, " {\n");
|
||||||
|
fprintf(outFile, " name = \"%s\",\n", callbacks[i].name);
|
||||||
|
fprintf(outFile, " description = \"%s\",\n", EscapeBackslashes(callbacks[i].desc));
|
||||||
|
fprintf(outFile, " returnType = \"%s\"", callbacks[i].retType);
|
||||||
|
|
||||||
|
if (callbacks[i].paramCount == 0) fprintf(outFile, "\n");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf(outFile, ",\n params = {\n");
|
||||||
|
for (int p = 0; p < callbacks[i].paramCount; p++)
|
||||||
|
{
|
||||||
|
fprintf(outFile, " {type = \"%s\", name = \"%s\"}", callbacks[i].paramType[p], callbacks[i].paramName[p]);
|
||||||
|
if (p < callbacks[i].paramCount - 1) fprintf(outFile, ",\n");
|
||||||
|
else fprintf(outFile, "\n");
|
||||||
|
}
|
||||||
|
fprintf(outFile, " }\n");
|
||||||
|
}
|
||||||
|
fprintf(outFile, " }");
|
||||||
|
|
||||||
|
if (i < callbackCount - 1) fprintf(outFile, ",\n");
|
||||||
|
else fprintf(outFile, "\n");
|
||||||
|
}
|
||||||
fprintf(outFile, " }\n");
|
fprintf(outFile, " }\n");
|
||||||
fprintf(outFile, "}\n");
|
fprintf(outFile, "}\n");
|
||||||
} break;
|
} break;
|
||||||
@ -1296,14 +1521,14 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
{
|
{
|
||||||
fprintf(outFile, " {\n");
|
fprintf(outFile, " {\n");
|
||||||
fprintf(outFile, " \"name\": \"%s\",\n", structs[i].name);
|
fprintf(outFile, " \"name\": \"%s\",\n", structs[i].name);
|
||||||
fprintf(outFile, " \"description\": \"%s\",\n", EscapeBackslashes(structs[i].desc + 3));
|
fprintf(outFile, " \"description\": \"%s\",\n", EscapeBackslashes(structs[i].desc));
|
||||||
fprintf(outFile, " \"fields\": [\n");
|
fprintf(outFile, " \"fields\": [\n");
|
||||||
for (int f = 0; f < structs[i].fieldCount; f++)
|
for (int f = 0; f < structs[i].fieldCount; f++)
|
||||||
{
|
{
|
||||||
fprintf(outFile, " {\n");
|
fprintf(outFile, " {\n");
|
||||||
fprintf(outFile, " \"type\": \"%s\",\n", structs[i].fieldType[f]);
|
fprintf(outFile, " \"type\": \"%s\",\n", structs[i].fieldType[f]);
|
||||||
fprintf(outFile, " \"name\": \"%s\",\n", structs[i].fieldName[f]);
|
fprintf(outFile, " \"name\": \"%s\",\n", structs[i].fieldName[f]);
|
||||||
fprintf(outFile, " \"description\": \"%s\"\n", EscapeBackslashes(structs[i].fieldDesc[f] + 3));
|
fprintf(outFile, " \"description\": \"%s\"\n", EscapeBackslashes(structs[i].fieldDesc[f]));
|
||||||
fprintf(outFile, " }");
|
fprintf(outFile, " }");
|
||||||
if (f < structs[i].fieldCount - 1) fprintf(outFile, ",\n");
|
if (f < structs[i].fieldCount - 1) fprintf(outFile, ",\n");
|
||||||
else fprintf(outFile, "\n");
|
else fprintf(outFile, "\n");
|
||||||
@ -1322,7 +1547,7 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
fprintf(outFile, " {\n");
|
fprintf(outFile, " {\n");
|
||||||
fprintf(outFile, " \"type\": \"%s\",\n", aliases[i].type);
|
fprintf(outFile, " \"type\": \"%s\",\n", aliases[i].type);
|
||||||
fprintf(outFile, " \"name\": \"%s\",\n", aliases[i].name);
|
fprintf(outFile, " \"name\": \"%s\",\n", aliases[i].name);
|
||||||
fprintf(outFile, " \"description\": \"%s\"\n", aliases[i].desc + 3);
|
fprintf(outFile, " \"description\": \"%s\"\n", aliases[i].desc);
|
||||||
fprintf(outFile, " }");
|
fprintf(outFile, " }");
|
||||||
|
|
||||||
if (i < aliasCount - 1) fprintf(outFile, ",\n");
|
if (i < aliasCount - 1) fprintf(outFile, ",\n");
|
||||||
@ -1336,14 +1561,14 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
{
|
{
|
||||||
fprintf(outFile, " {\n");
|
fprintf(outFile, " {\n");
|
||||||
fprintf(outFile, " \"name\": \"%s\",\n", enums[i].name);
|
fprintf(outFile, " \"name\": \"%s\",\n", enums[i].name);
|
||||||
fprintf(outFile, " \"description\": \"%s\",\n", EscapeBackslashes(enums[i].desc + 3));
|
fprintf(outFile, " \"description\": \"%s\",\n", EscapeBackslashes(enums[i].desc));
|
||||||
fprintf(outFile, " \"values\": [\n");
|
fprintf(outFile, " \"values\": [\n");
|
||||||
for (int e = 0; e < enums[i].valueCount; e++)
|
for (int e = 0; e < enums[i].valueCount; e++)
|
||||||
{
|
{
|
||||||
fprintf(outFile, " {\n");
|
fprintf(outFile, " {\n");
|
||||||
fprintf(outFile, " \"name\": \"%s\",\n", enums[i].valueName[e]);
|
fprintf(outFile, " \"name\": \"%s\",\n", enums[i].valueName[e]);
|
||||||
fprintf(outFile, " \"value\": %i,\n", enums[i].valueInteger[e]);
|
fprintf(outFile, " \"value\": %i,\n", enums[i].valueInteger[e]);
|
||||||
fprintf(outFile, " \"description\": \"%s\"\n", EscapeBackslashes(enums[i].valueDesc[e] + 3));
|
fprintf(outFile, " \"description\": \"%s\"\n", EscapeBackslashes(enums[i].valueDesc[e]));
|
||||||
fprintf(outFile, " }");
|
fprintf(outFile, " }");
|
||||||
if (e < enums[i].valueCount - 1) fprintf(outFile, ",\n");
|
if (e < enums[i].valueCount - 1) fprintf(outFile, ",\n");
|
||||||
else fprintf(outFile, "\n");
|
else fprintf(outFile, "\n");
|
||||||
@ -1378,7 +1603,7 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
{
|
{
|
||||||
fprintf(outFile, " \"value\": \"%s\",\n", defines[i].value);
|
fprintf(outFile, " \"value\": \"%s\",\n", defines[i].value);
|
||||||
}
|
}
|
||||||
fprintf(outFile, " \"description\": \"%s\"\n", defines[i].desc + 3);
|
fprintf(outFile, " \"description\": \"%s\"\n", defines[i].desc);
|
||||||
fprintf(outFile, " }");
|
fprintf(outFile, " }");
|
||||||
|
|
||||||
if (i < defineCount - 1) fprintf(outFile, ",\n");
|
if (i < defineCount - 1) fprintf(outFile, ",\n");
|
||||||
@ -1392,7 +1617,7 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
{
|
{
|
||||||
fprintf(outFile, " {\n");
|
fprintf(outFile, " {\n");
|
||||||
fprintf(outFile, " \"name\": \"%s\",\n", funcs[i].name);
|
fprintf(outFile, " \"name\": \"%s\",\n", funcs[i].name);
|
||||||
fprintf(outFile, " \"description\": \"%s\",\n", EscapeBackslashes(funcs[i].desc + 3));
|
fprintf(outFile, " \"description\": \"%s\",\n", EscapeBackslashes(funcs[i].desc));
|
||||||
fprintf(outFile, " \"returnType\": \"%s\"", funcs[i].retType);
|
fprintf(outFile, " \"returnType\": \"%s\"", funcs[i].retType);
|
||||||
|
|
||||||
if (funcs[i].paramCount == 0) fprintf(outFile, "\n");
|
if (funcs[i].paramCount == 0) fprintf(outFile, "\n");
|
||||||
@ -1415,6 +1640,37 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
if (i < funcCount - 1) fprintf(outFile, ",\n");
|
if (i < funcCount - 1) fprintf(outFile, ",\n");
|
||||||
else fprintf(outFile, "\n");
|
else fprintf(outFile, "\n");
|
||||||
}
|
}
|
||||||
|
fprintf(outFile, " ],\n");
|
||||||
|
|
||||||
|
// Print callbacks info
|
||||||
|
fprintf(outFile, " \"callbacks\": [\n");
|
||||||
|
for (int i = 0; i < callbackCount; i++)
|
||||||
|
{
|
||||||
|
fprintf(outFile, " {\n");
|
||||||
|
fprintf(outFile, " \"name\": \"%s\",\n", callbacks[i].name);
|
||||||
|
fprintf(outFile, " \"description\": \"%s\",\n", EscapeBackslashes(callbacks[i].desc));
|
||||||
|
fprintf(outFile, " \"returnType\": \"%s\"", callbacks[i].retType);
|
||||||
|
|
||||||
|
if (callbacks[i].paramCount == 0) fprintf(outFile, "\n");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf(outFile, ",\n \"params\": [\n");
|
||||||
|
for (int p = 0; p < callbacks[i].paramCount; p++)
|
||||||
|
{
|
||||||
|
fprintf(outFile, " {\n");
|
||||||
|
fprintf(outFile, " \"type\": \"%s\",\n", callbacks[i].paramType[p]);
|
||||||
|
fprintf(outFile, " \"name\": \"%s\"\n", callbacks[i].paramName[p]);
|
||||||
|
fprintf(outFile, " }");
|
||||||
|
if (p < callbacks[i].paramCount - 1) fprintf(outFile, ",\n");
|
||||||
|
else fprintf(outFile, "\n");
|
||||||
|
}
|
||||||
|
fprintf(outFile, " ]\n");
|
||||||
|
}
|
||||||
|
fprintf(outFile, " }");
|
||||||
|
|
||||||
|
if (i < callbackCount - 1) fprintf(outFile, ",\n");
|
||||||
|
else fprintf(outFile, "\n");
|
||||||
|
}
|
||||||
fprintf(outFile, " ]\n");
|
fprintf(outFile, " ]\n");
|
||||||
fprintf(outFile, "}\n");
|
fprintf(outFile, "}\n");
|
||||||
} break;
|
} break;
|
||||||
@ -1448,6 +1704,12 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
<Param type="" name="" desc="" />
|
<Param type="" name="" desc="" />
|
||||||
</Function>
|
</Function>
|
||||||
</Functions>
|
</Functions>
|
||||||
|
<Callbacks count="">
|
||||||
|
<Callback name="" retType="" paramCount="" desc="">
|
||||||
|
<Param type="" name="" desc="" />
|
||||||
|
<Param type="" name="" desc="" />
|
||||||
|
</Callback>
|
||||||
|
</Callbacks>
|
||||||
</raylibAPI>
|
</raylibAPI>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -1458,10 +1720,10 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
fprintf(outFile, " <Structs count=\"%i\">\n", structCount);
|
fprintf(outFile, " <Structs count=\"%i\">\n", structCount);
|
||||||
for (int i = 0; i < structCount; i++)
|
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);
|
fprintf(outFile, " <Struct name=\"%s\" fieldCount=\"%i\" desc=\"%s\">\n", structs[i].name, structs[i].fieldCount, structs[i].desc);
|
||||||
for (int f = 0; f < structs[i].fieldCount; f++)
|
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, " <Field type=\"%s\" name=\"%s\" desc=\"%s\" />\n", structs[i].fieldType[f], structs[i].fieldName[f], structs[i].fieldDesc[f]);
|
||||||
}
|
}
|
||||||
fprintf(outFile, " </Struct>\n");
|
fprintf(outFile, " </Struct>\n");
|
||||||
}
|
}
|
||||||
@ -1471,7 +1733,7 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
fprintf(outFile, " <Aliases count=\"%i\">\n", aliasCount);
|
fprintf(outFile, " <Aliases count=\"%i\">\n", aliasCount);
|
||||||
for (int i = 0; i < aliasCount; i++)
|
for (int i = 0; i < aliasCount; i++)
|
||||||
{
|
{
|
||||||
fprintf(outFile, " <Alias type=\"%s\" name=\"%s\" desc=\"%s\" />\n", aliases[i].name, aliases[i].type, aliases[i].desc + 3);
|
fprintf(outFile, " <Alias type=\"%s\" name=\"%s\" desc=\"%s\" />\n", aliases[i].name, aliases[i].type, aliases[i].desc);
|
||||||
}
|
}
|
||||||
fprintf(outFile, " </Aliases>\n");
|
fprintf(outFile, " </Aliases>\n");
|
||||||
|
|
||||||
@ -1479,10 +1741,10 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
fprintf(outFile, " <Enums count=\"%i\">\n", enumCount);
|
fprintf(outFile, " <Enums count=\"%i\">\n", enumCount);
|
||||||
for (int i = 0; i < enumCount; i++)
|
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);
|
fprintf(outFile, " <Enum name=\"%s\" valueCount=\"%i\" desc=\"%s\">\n", enums[i].name, enums[i].valueCount, enums[i].desc);
|
||||||
for (int v = 0; v < enums[i].valueCount; v++)
|
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, " <Value name=\"%s\" integer=\"%i\" desc=\"%s\" />\n", enums[i].valueName[v], enums[i].valueInteger[v], enums[i].valueDesc[v]);
|
||||||
}
|
}
|
||||||
fprintf(outFile, " </Enum>\n");
|
fprintf(outFile, " </Enum>\n");
|
||||||
}
|
}
|
||||||
@ -1501,7 +1763,7 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
{
|
{
|
||||||
fprintf(outFile, "value=\"%s\"", defines[i].value);
|
fprintf(outFile, "value=\"%s\"", defines[i].value);
|
||||||
}
|
}
|
||||||
fprintf(outFile, " desc=\"%s\" />\n", defines[i].desc + 3);
|
fprintf(outFile, " desc=\"%s\" />\n", defines[i].desc);
|
||||||
}
|
}
|
||||||
fprintf(outFile, " </Defines>\n");
|
fprintf(outFile, " </Defines>\n");
|
||||||
|
|
||||||
@ -1509,15 +1771,28 @@ static void ExportParsedData(const char *fileName, int format)
|
|||||||
fprintf(outFile, " <Functions count=\"%i\">\n", funcCount);
|
fprintf(outFile, " <Functions count=\"%i\">\n", funcCount);
|
||||||
for (int i = 0; i < funcCount; i++)
|
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);
|
fprintf(outFile, " <Function name=\"%s\" retType=\"%s\" paramCount=\"%i\" desc=\"%s\">\n", funcs[i].name, funcs[i].retType, funcs[i].paramCount, funcs[i].desc);
|
||||||
for (int p = 0; p < funcs[i].paramCount; p++)
|
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, " <Param type=\"%s\" name=\"%s\" desc=\"%s\" />\n", funcs[i].paramType[p], funcs[i].paramName[p], funcs[i].paramDesc[p]);
|
||||||
}
|
}
|
||||||
fprintf(outFile, " </Function>\n");
|
fprintf(outFile, " </Function>\n");
|
||||||
}
|
}
|
||||||
fprintf(outFile, " </Functions>\n");
|
fprintf(outFile, " </Functions>\n");
|
||||||
|
|
||||||
|
// Print callbacks info
|
||||||
|
fprintf(outFile, " <Callbacks count=\"%i\">\n", callbackCount);
|
||||||
|
for (int i = 0; i < callbackCount; i++)
|
||||||
|
{
|
||||||
|
fprintf(outFile, " <Callback name=\"%s\" retType=\"%s\" paramCount=\"%i\" desc=\"%s\">\n", callbacks[i].name, callbacks[i].retType, callbacks[i].paramCount, callbacks[i].desc);
|
||||||
|
for (int p = 0; p < callbacks[i].paramCount; p++)
|
||||||
|
{
|
||||||
|
fprintf(outFile, " <Param type=\"%s\" name=\"%s\" desc=\"%s\" />\n", callbacks[i].paramType[p], callbacks[i].paramName[p], callbacks[i].paramDesc[p]);
|
||||||
|
}
|
||||||
|
fprintf(outFile, " </Callback>\n");
|
||||||
|
}
|
||||||
|
fprintf(outFile, " </Callbacks>\n");
|
||||||
|
|
||||||
fprintf(outFile, "</raylibAPI>\n");
|
fprintf(outFile, "</raylibAPI>\n");
|
||||||
|
|
||||||
} break;
|
} break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user