2021-11-02 14:00:23 +03:00
# raylib parser
2021-05-30 12:51:15 +03:00
2022-08-02 22:02:11 +03:00
This parser scans [`raylib.h` ](../src/raylib.h ) to get information about `defines` , `structs` , `enums` and `functions` .
2021-05-30 12:51:15 +03:00
All data is separated into parts, usually as strings. The following types are used for data:
2022-08-02 22:02:11 +03:00
- `struct DefineInfo`
2021-05-30 12:51:15 +03:00
- `struct FunctionInfo`
- `struct StructInfo`
- `struct EnumInfo`
Check `raylib_parser.c` for details about those structs.
2022-08-02 22:07:47 +03:00
## Command Line
2021-06-06 11:21:56 +03:00
2022-08-02 22:16:46 +03:00
```
//////////////////////////////////////////////////////////////////////////////////
// //
// raylib API parser //
// //
// more info and bugs-report: github.com/raysan5/raylib/parser //
// //
2023-01-01 20:09:22 +03:00
// Copyright (c) 2021-2023 Ramon Santamaria (@raysan5) //
2022-08-02 22:16:46 +03:00
// //
//////////////////////////////////////////////////////////////////////////////////
USAGE:
> raylib_parser [--help] [--input <filename.h>] [--output <filename.ext>] [--format <type>]
OPTIONS:
-h, --help : Show tool version and command line usage help
-i, --input < filename.h > : Define input header file to parse.
NOTE: If not specified, defaults to: raylib.h
-o, --output < filename.ext > : Define output file and format.
Supported extensions: .txt, .json, .xml, .h
NOTE: If not specified, defaults to: raylib_api.txt
-f, --format < type > : Define output format for parser data.
Supported types: DEFAULT, JSON, XML, LUA
-d, --define < DEF > : Define functions specifiers (i.e. RLAPI for raylib.h, RMDEF for raymath.h, etc.)
NOTE: If no specifier defined, defaults to: RLAPI
-t, --truncate < after > : Define string to truncate input after (i.e. "RLGL IMPLEMENTATION" for rlgl.h)
NOTE: If not specified, the full input file is parsed.
EXAMPLES:
> raylib_parser --input raylib.h --output api.json
Process < raylib.h > to generate < api.json >
> raylib_parser --output raylib_data.info --format XML
Process < raylib.h > to generate < raylib_data.info > as XML text data
> raylib_parser --input raymath.h --output raymath_data.info --format XML
Process < raymath.h > to generate < raymath_data.info > as XML text data
```
2021-06-06 11:21:56 +03:00
2021-05-30 12:51:15 +03:00
## Constraints
This parser is specifically designed to work with raylib.h, so, it has some constraints:
- Functions are expected as a single line with the following structure:
```
< retType > < name > (< paramType [ 0 ] > < paramName [ 0 ] > , < paramType [ 1 ] > < paramName [ 1 ] > ); < desc >
```
Be careful with functions broken into several lines, it breaks the process!
- Structures are expected as several lines with the following form:
```
< desc >
typedef struct < name > {
< fieldType [ 0 ] > < fieldName [ 0 ] > ; < fieldDesc [ 0 ] >
< fieldType [ 1 ] > < fieldName [ 1 ] > ; < fieldDesc [ 1 ] >
< fieldType [ 2 ] > < fieldName [ 2 ] > ; < fieldDesc [ 2 ] >
} < name > ;
```
- Enums are expected as several lines with the following form:
```
< desc >
typedef enum {
2021-05-31 13:37:03 +03:00
< valueName [ 0 ] > = < valueInteger [ 0 ] > , < valueDesc [ 0 ] >
2021-05-30 12:51:15 +03:00
< valueName [ 1 ] > ,
< valueName [ 2 ] > , < valueDesc [ 2 ] >
< valueName [ 3 ] > < valueDesc [ 3 ] >
} < name > ;
```
_NOTE: For enums, multiple options are supported:_
2021-05-31 13:37:03 +03:00
- If value is not provided, (< valueInteger [ i -1 ] > + 1) is assigned
2021-05-30 12:51:15 +03:00
- Value description can be provided or not
## Additional notes
This parser _could_ work with other C header files if mentioned constraints are followed.
This parser **does not require `<string.h>` library** , all data is parsed directly from char buffers.
### LICENSE: zlib/libpng
2021-11-02 14:03:42 +03:00
raylib-parser is licensed under an unmodified zlib/libpng license, which is an OSI-certified, BSD-like license that allows static linking with closed source software. Check [LICENSE ](LICENSE ) for further details.
2021-05-30 12:51:15 +03:00