WARNING: **BREAKING**: Moved raylib parser to tools/parser directory
This commit is contained in:
parent
cdfb9d7a0b
commit
47c186dd87
9 changed files with 2 additions and 2 deletions
4
.github/workflows/parse.yml
vendored
4
.github/workflows/parse.yml
vendored
|
|
@ -1,4 +1,4 @@
|
||||||
name: Parse raylib_api
|
name: Parse raylib API
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
@ -14,7 +14,7 @@ jobs:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Update parse files
|
- name: Update parse files
|
||||||
working-directory: parser
|
working-directory: tools/parser
|
||||||
run: |
|
run: |
|
||||||
make raylib_api
|
make raylib_api
|
||||||
mv raylib_api.* output
|
mv raylib_api.* output
|
||||||
|
|
|
||||||
16
tools/parser/LICENSE
Normal file
16
tools/parser/LICENSE
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
Copyright (c) 2021-2025 Ramon Santamaria (@raysan5)
|
||||||
|
|
||||||
|
This software is provided "as-is", without any express or implied warranty. In no event
|
||||||
|
will the authors be held liable for any damages arising from the use of this software.
|
||||||
|
|
||||||
|
Permission is granted to anyone to use this software for any purpose, including commercial
|
||||||
|
applications, and to alter it and redistribute it freely, subject to the following restrictions:
|
||||||
|
|
||||||
|
1. The origin of this software must not be misrepresented; you must not claim that you
|
||||||
|
wrote the original software. If you use this software in a product, an acknowledgment
|
||||||
|
in the product documentation would be appreciated but is not required.
|
||||||
|
|
||||||
|
2. Altered source versions must be plainly marked as such, and must not be misrepresented
|
||||||
|
as being the original software.
|
||||||
|
|
||||||
|
3. This notice may not be removed or altered from any source distribution.
|
||||||
50
tools/parser/Makefile
Normal file
50
tools/parser/Makefile
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
EXTENSION?=txt
|
||||||
|
FORMAT?=DEFAULT
|
||||||
|
.PHONY: all parse clean raylib_api
|
||||||
|
|
||||||
|
|
||||||
|
raylib_parser: raylib_parser.c
|
||||||
|
cc raylib_parser.c -o raylib_parser
|
||||||
|
|
||||||
|
raylib_api: ../src/raylib.h raylib_parser
|
||||||
|
FORMAT=DEFAULT EXTENSION=txt $(MAKE) raylib_api.txt
|
||||||
|
FORMAT=JSON EXTENSION=json $(MAKE) raylib_api.json
|
||||||
|
FORMAT=XML EXTENSION=xml $(MAKE) raylib_api.xml
|
||||||
|
FORMAT=LUA EXTENSION=lua $(MAKE) raylib_api.lua
|
||||||
|
|
||||||
|
raylib_api.$(EXTENSION): ../src/raylib.h raylib_parser
|
||||||
|
./raylib_parser -i ../src/raylib.h -o raylib_api.$(EXTENSION) -f $(FORMAT) -d RLAPI
|
||||||
|
|
||||||
|
raymath_api.$(EXTENSION): ../src/raymath.h raylib_parser
|
||||||
|
./raylib_parser -i ../src/raymath.h -o raymath_api.$(EXTENSION) -f $(FORMAT) -d RMAPI
|
||||||
|
|
||||||
|
rlgl_api.$(EXTENSION): ../src/rlgl.h raylib_parser
|
||||||
|
./raylib_parser -i ../src/rlgl.h -o rlgl_api.$(EXTENSION) -f $(FORMAT) -d RLAPI -t "RLGL IMPLEMENTATION"
|
||||||
|
|
||||||
|
reasings_api.$(EXTENSION): ../examples/others/reasings.h raylib_parser
|
||||||
|
./raylib_parser -i ../examples/others/reasings.h -o reasings_api.$(EXTENSION) -f $(FORMAT) -d EASEDEF
|
||||||
|
|
||||||
|
rmem_api.$(EXTENSION): ../rmem.h raylib_parser
|
||||||
|
./raylib_parser -i ../rmem.h -o rmem_api.$(EXTENSION) -f $(FORMAT) -d RMEMAPI -t "RMEM IMPLEMENTATION"
|
||||||
|
|
||||||
|
physac_api.$(EXTENSION): ../physac.h raylib_parser
|
||||||
|
./raylib_parser -i ../physac.h -o physac_api.$(EXTENSION) -f $(FORMAT) -d PHYSACDEF -t "PHYSAC IMPLEMENTATION"
|
||||||
|
|
||||||
|
raygui_api.$(EXTENSION): ../raygui.h raylib_parser
|
||||||
|
./raylib_parser -i ../raygui.h -o raygui_api.$(EXTENSION) -f $(FORMAT) -d RAYGUIAPI -t "RAYGUI IMPLEMENTATION"
|
||||||
|
|
||||||
|
parse: raylib_api.$(EXTENSION) raymath_api.$(EXTENSION) rlgl_api.$(EXTENSION) rmem_api.$(EXTENSION) physac_api.$(EXTENSION) raygui_api.$(EXTENSION)
|
||||||
|
|
||||||
|
|
||||||
|
# `make parse` (and therefore `make all) requires
|
||||||
|
# rmem.h, physac.h and raygui.h to exist in the correct directory
|
||||||
|
# API files for individual headers can be created likeso, provided the relevant header exists:
|
||||||
|
# FORMAT=JSON EXTENSION=json make raygui_api.json
|
||||||
|
all: raylib_parser
|
||||||
|
FORMAT=DEFAULT EXTENSION=txt $(MAKE) parse
|
||||||
|
FORMAT=JSON EXTENSION=json $(MAKE) parse
|
||||||
|
FORMAT=XML EXTENSION=xml $(MAKE) parse
|
||||||
|
FORMAT=LUA EXTENSION=lua $(MAKE) parse
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f raylib_parser *.json *.txt *.xml *.lua
|
||||||
107
tools/parser/README.md
Normal file
107
tools/parser/README.md
Normal file
|
|
@ -0,0 +1,107 @@
|
||||||
|
# raylib parser
|
||||||
|
|
||||||
|
This parser scans [`raylib.h`](../src/raylib.h) to get information about `defines`, `structs`, `enums` and `functions`.
|
||||||
|
All data is separated into parts, usually as strings. The following types are used for data:
|
||||||
|
|
||||||
|
- `struct DefineInfo`
|
||||||
|
- `struct FunctionInfo`
|
||||||
|
- `struct StructInfo`
|
||||||
|
- `struct EnumInfo`
|
||||||
|
|
||||||
|
Check `raylib_parser.c` for details about those structs.
|
||||||
|
|
||||||
|
## Command Line
|
||||||
|
|
||||||
|
```
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// //
|
||||||
|
// raylib API parser //
|
||||||
|
// //
|
||||||
|
// more info and bugs-report: github.com/raysan5/raylib/parser //
|
||||||
|
// //
|
||||||
|
// Copyright (c) 2021-2025 Ramon Santamaria (@raysan5) //
|
||||||
|
// //
|
||||||
|
//////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
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, RMAPI 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 --define RMAPI
|
||||||
|
Process <raymath.h> to generate <raymath_data.info> as XML text data
|
||||||
|
```
|
||||||
|
|
||||||
|
## Constraints
|
||||||
|
|
||||||
|
This parser is specifically designed to work with raylib.h, so, it has some constraints:
|
||||||
|
|
||||||
|
- Functions are expected as a single line with the following structure:
|
||||||
|
```
|
||||||
|
<retType> <name>(<paramType[0]> <paramName[0]>, <paramType[1]> <paramName[1]>); <desc>
|
||||||
|
```
|
||||||
|
Be careful with functions broken into several lines, it breaks the process!
|
||||||
|
|
||||||
|
- Structures are expected as several lines with the following form:
|
||||||
|
```
|
||||||
|
<desc>
|
||||||
|
typedef struct <name> {
|
||||||
|
<fieldType[0]> <fieldName[0]>; <fieldDesc[0]>
|
||||||
|
<fieldType[1]> <fieldName[1]>; <fieldDesc[1]>
|
||||||
|
<fieldType[2]> <fieldName[2]>; <fieldDesc[2]>
|
||||||
|
} <name>;
|
||||||
|
```
|
||||||
|
- Enums are expected as several lines with the following form:
|
||||||
|
```
|
||||||
|
<desc>
|
||||||
|
typedef enum {
|
||||||
|
<valueName[0]> = <valueInteger[0]>, <valueDesc[0]>
|
||||||
|
<valueName[1]>,
|
||||||
|
<valueName[2]>, <valueDesc[2]>
|
||||||
|
<valueName[3]> <valueDesc[3]>
|
||||||
|
} <name>;
|
||||||
|
```
|
||||||
|
|
||||||
|
_NOTE: For enums, multiple options are supported:_
|
||||||
|
|
||||||
|
- If value is not provided, (<valueInteger[i -1]> + 1) is assigned
|
||||||
|
- 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
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
12219
tools/parser/output/raylib_api.json
Normal file
12219
tools/parser/output/raylib_api.json
Normal file
File diff suppressed because it is too large
Load diff
8334
tools/parser/output/raylib_api.lua
Normal file
8334
tools/parser/output/raylib_api.lua
Normal file
File diff suppressed because it is too large
Load diff
4696
tools/parser/output/raylib_api.txt
Normal file
4696
tools/parser/output/raylib_api.txt
Normal file
File diff suppressed because it is too large
Load diff
3134
tools/parser/output/raylib_api.xml
Normal file
3134
tools/parser/output/raylib_api.xml
Normal file
File diff suppressed because it is too large
Load diff
2000
tools/parser/raylib_parser.c
Normal file
2000
tools/parser/raylib_parser.c
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue